Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel? / 24 сообщений из 24, страница 1 из 1
18.01.2011, 17:46
    #37065192
Yuri_B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
День добрый всем,
подскажите - есть файл ексель со сводными таблицами,
мне нужно любым скриптом(ActiveX script, Java script,VB script, любой скрипт который можно запустить из MS SQL IS пакета) или командой командной строки выполнить обновление сводных таблиц и сохрать файл с новыми данными.(файл при этом не открывая)

как это сделать?
...
Рейтинг: 0 / 0
18.01.2011, 18:00
    #37065218
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Здравствуйте.
И почему у всех такая ненависть к открыванию файлов? Что будет, если файл откроете, обновите, сохраните и закроете? Тем более, что сохранить измененый файл, не открыв его, вообще нельзя, т.к. требуется перезапись данных в самом файле.

Можно же просто открыть файл, в скрытом режиме.
...
Рейтинг: 0 / 0
18.01.2011, 18:02
    #37065225
Yuri_B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
The_Prist,

так машина должна это сама делать - для этого скрипт и нужен
...
Рейтинг: 0 / 0
18.01.2011, 18:05
    #37065231
Yuri_B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
The_Prist,

вот нашел скрипт, но пока не могу его запустить из пакета(мне хотя бы чтобы данные файла обновлялись и он сохранялся, если файл откроется в скрытом режиме и закроется после обновления - это устроит):

Hi I have a vb script which currently open a specified excel file refresh the pivot tables within it, then sends it via email to the recipients.
The following is the code of the vb script.

xfile()
excel()
MailItem()


sub xfile()

file = "Sales.xls" ' a XLS file
OutFile = (GetPath+file)

end sub

Sub excel()

DIM objXL, objWb, objR ' Excel object variables
DIM Title, Text, tmp, i, j, name

' create an Excel object reference
Set objXL = WScript.CreateObject ("Excel.Application")

objXL.Visible = false ' show window

' Load the Excel file from the script's folder
Set objWb = objXl.WorkBooks.Open(GetPath+file)

objwb.RefreshAll


input1 = objxl.range("B2")

year = (Left(smsinput1, 4))
period = (trim(right(smsinput1, 2)))


objwb.save
objwb.close
set objWB = Nothing

objXl.Quit() ' Quit Excel

Set objXL = Nothing



end sub

Sub mailitem()



Const cdoSendUsingMethod = " http://schemas.microsoft.com/cdo/configuration/sendusing", _
cdoSendUsingPort = 2, _
cdoSMTPServer = " http://schemas.microsoft.com/cdo/configuration/smtpserver"

'// Create the CDO connections.
Dim iMsg, iConf, Flds
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
Set Flds = iConf.Fields

'// SMTP server configuration.
With Flds
.Item(cdoSendUsingMethod) = cdoSendUsingPort

'// Set the SMTP server address here.
.Item(cdoSMTPServer) = "smtpserver"
.Update
End With

'// Set the message properties.
With iMsg
Set .Configuration = iConf
.To = "recipient@email.com"
'.CC = "recipient@email.com"
.From = "sender@email.com"
.Subject = "Report"
.TextBody = " Attached is the Daily Report
End With

'// An attachment can be included.

OutFile = (GetPath+file)

iMsg.AddAttachment OutFile

'// Send the message.
iMsg.Send ' send the message.



end sub




'##########################
Function GetPath
' Retrieve the script path
DIM path
path = WScript.ScriptFullName ' Script name
GetPath = Left(path, InstrRev(path, "\"))
End Function
...
Рейтинг: 0 / 0
18.01.2011, 21:11
    #37065446
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Yuri_B,

Вы явно вообще ничего не понимаете в VB :-) Т.к. очень много лишнего Вы выложили :-)
Срипт на VB вообщем вот так выглядит:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
DIM objXL, objWb
DIM sPath,sFile

sPath = WScript.ScriptFullName
msgbox(sPath)
sPath = Left(sPath, InstrRev(sPath, "\"))
msgbox(sPath)
sFile = "Sales.xls"

Set objXL = WScript.CreateObject("Excel.Application")
objXL.Visible = false
Set objWb = objXl.WorkBooks.Open(sPath & sFile)
objwb.RefreshAll
objwb.close True

objXl.Quit

set objWB = Nothing
Set objXL = Nothing

Во вложении сам файл скрипта(vbs)
...
Рейтинг: 0 / 0
18.01.2011, 21:21
    #37065453
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
The_Prist,
Код: plaintext
objXL.Visible = false
нужен ли?
...
Рейтинг: 0 / 0
18.01.2011, 21:26
    #37065458
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
timtim,

нет, конечно. Он на всякий случай :-)
...
Рейтинг: 0 / 0
18.01.2011, 21:27
    #37065461
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Да, и msgbox(sPath) тоже не нужны....Забыл их удалить. Перепаковал файл без них.
...
Рейтинг: 0 / 0
20.01.2011, 12:36
    #37068829
Yuri_B
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
The_Prist,

Спасибо большое!!!
...
Рейтинг: 0 / 0
10.08.2011, 14:00
    #37389090
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Люди добрые, а как сделать чтобы он перебирал все файлы в папке и обновлял их? В VB не очень разбираюсь :)
...
Рейтинг: 0 / 0
11.08.2011, 15:58
    #37391260
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DIM objXL, objWb
DIM sPath,sFile
sPath = "C:\AutoRefreshScr\" '
Set objXL = WScript.CreateObject("Excel.Application")
objXL.DisplayAlerts = False
objXL.Visible = false
sFiles = Dir(sPath & "*.xlsx")
Do While sFiles <> ""
Set objWb = objXl.WorkBooks.Open(sPath & sFile)
For i =  1  To objWb.PivotCaches.Count
        objWb.PivotCaches(i).RefreshOnFileOpen = False
    Next
    For i =  1  To objWb.Sheets.Count
        For j =  1  To objWb.Sheets(i).QueryTables.Count
            objWb.Sheets(i).QueryTables(j).RefreshOnFileOpen = False
        Next
    Next
    objWb.RefreshAll
    objWb.RefreshAll
    objWb.RefreshAll
	objXL.CalculateFull
    objWb.Save
    objWb.Close
    objXL.Quit
    sFiles = Dir
Loop

Set objWB = Nothing
Set objXL = Nothing
Люди что я делаю не так ??
...
Рейтинг: 0 / 0
11.08.2011, 16:16
    #37391313
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
> Автор: gaint_re
> Люди что я делаю не так ??


Закрываешь Ексель, до того как переберёшь все файлы в папке. Тебе нужно перенести objXL.Quit после Loop


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2011, 16:31
    #37391346
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Игорь Горбонос,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
DIM objXL, objWb
DIM sPath,sFile
sPath = "C:\Users\a.smirnov\Downloads\AutoRefreshScr" '
Set objXL = WScript.CreateObject("Excel.Application")
objXL.DisplayAlerts = False
objXL.Visible = false
sFiles = Dir(sPath & "*.xlsx")
Do While sFiles <> ""
Set objWb = objXl.WorkBooks.Open(sPath & sFile)
For i =  1  To objWb.PivotCaches.Count
        objWb.PivotCaches(i).RefreshOnFileOpen = False
    Next
    For i =  1  To objWb.Sheets.Count
        For j =  1  To objWb.Sheets(i).QueryTables.Count
            objWb.Sheets(i).QueryTables(j).RefreshOnFileOpen = False
        Next
    Next
    objWb.RefreshAll
    objWb.RefreshAll
    objWb.RefreshAll
	objXL.CalculateFull
    objWb.Save
    objWb.Close
    sFiles = Dir
Loop
objXL.Quit
Set objWB = Nothing
Set objXL = Nothing
Ругается на 7 строку: Несоответствие типу: 'Dir'
...
Рейтинг: 0 / 0
11.08.2011, 16:40
    #37391366
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
> Автор: gaint_re


Проинициализируй переменную sFile пустой строкой:
Код: plaintext
sFile = ""


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2011, 17:07
    #37391408
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Игорь Горбонос,

та же ошибка
...
Рейтинг: 0 / 0
11.08.2011, 17:56
    #37391529
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
gaint_re,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
DIM objXL, objWb
DIM sPath, sFile
sPath = "C:\AutoRefreshScr" '
Set objXL = WScript.CreateObject("Excel.Application")
objXL.DisplayAlerts = False
objXL.Visible = false
sFile = ""
sFile = Dir(sPath & "*.xlsx")
Do While sFile <> ""
Set objWb = objXl.WorkBooks.Open(sPath & sFile)
For i =  1  To objWb.PivotCaches.Count
        objWb.PivotCaches(i).RefreshOnFileOpen = False
    Next
    For i =  1  To objWb.Sheets.Count
        For j =  1  To objWb.Sheets(i).QueryTables.Count
            objWb.Sheets(i).QueryTables(j).RefreshOnFileOpen = False
        Next
    Next
    objWb.RefreshAll
    objWb.RefreshAll
    objWb.RefreshAll
	objXL.CalculateFull
    objWb.Save
    objWb.Close
    sFile = Dir
Loop
objXL.Quit
Set objWB = Nothing
Set objXL = Nothing
Set sPath = Nothing
Set sFile = Nothing
Исправил все ошибки, но он все равно ругается. Ошибка "Несоответствие типу: 'Dir' " в:
Код: plaintext
sFile = Dir(sPath & "*.xlsx")
...
Рейтинг: 0 / 0
11.08.2011, 17:59
    #37391535
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
> Автор: gaint_re


Закрой слешом путь к папке с файлами. Ты потом к пути цепляешь шаблон для поиска файлов и без слеша получается билеберда
Код: plaintext
sPath = "C:\Users\a.smirnov\Downloads\AutoRefreshScr\"


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
11.08.2011, 18:03
    #37391541
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
gaint_reЛюди добрые, а как сделать чтобы он перебирал все файлы в папке и обновлял их? В VB не очень разбираюсь :)
Если на 1 листе находятся несколько пивотов и кверитэйблс, то может случиться так, что при обновлении данные одного объекта будет перекрывать другой - полная порнография выйдет, если просто обновление запускать при .DisplayAlerts = False.
У Вас такого не случится?
-----
Гори в аду, Progress OpenEdge
...
Рейтинг: 0 / 0
12.08.2011, 08:54
    #37392010
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Игорь Горбонос,
все исправил, но ошибка без изменений. Ругается на Dir.
...
Рейтинг: 0 / 0
12.08.2011, 10:37
    #37392182
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
> Автор: gaint_re
> все исправил, но ошибка без изменений. Ругается на Dir.


Странно, но как выяснилось VBScript не поддерживает эту функцию. Поэтому нужно переделать на использование
FileSystemObject так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Dim objXL, objWb
Dim sPath
Dim FSO, f
sPath = "C:\"
Set objXL = WScript.CreateObject("Excel.Application")
objXL.DisplayAlerts = False
objXL.Visible = False
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(sPath).Files
    If Right(f.Name,  3 ) = "xls" Then
        Set objWb = objXL.Workbooks.Open(f.Path)
        For i =  1  To objWb.PivotCaches.Count
            objWb.PivotCaches(i).RefreshOnFileOpen = False
        Next
        For i =  1  To objWb.Sheets.Count
            For j =  1  To objWb.Sheets(i).QueryTables.Count
                objWb.Sheets(i).QueryTables(j).RefreshOnFileOpen = False
            Next
        Next
        objWb.RefreshAll
        objWb.RefreshAll
        objWb.RefreshAll
        objXL.CalculateFull
        objWb.Save
        objWb.Close
        Set objWb = Nothing
    End If
Next
objXL.Quit
Set objXL = Nothing

Set f = Nothing
Set FSO = Nothing
MsgBox "Vse"


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
12.08.2011, 11:19
    #37392271
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Игорь Горбонос,

Спасибо большое за помощь!!!

Все работает и реально нужная вещь, если у вас масса отчетов, которые необходимо обновлять каждый день.
...
Рейтинг: 0 / 0
11.10.2011, 10:02
    #37476610
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Возникла новая проблема, данный скрипт отлично работает, где нужно обновить 2 таблицы с запросами к базе, где их порядка 5, обновляет не все. Есть предположение, что он не до конца ждет обновления таблицы и просто не обновляет ее.
...
Рейтинг: 0 / 0
12.10.2011, 11:22
    #37478450
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
> Автор: gaint_re
> Возникла новая проблема

Sleep?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.10.2011, 16:17
    #37481074
gaint_re
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Игорь Горбонос,
нет он просто не хочет обновлять таблицы порядковый номер 4,5.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
Dim objXL, objWb
Dim sPath
Dim FSO, f
sPath = "C:\"
Set objXL = WScript.CreateObject("Excel.Application")
objXL.DisplayAlerts = False
objXL.Visible = False
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
For Each f In FSO.GetFolder(sPath).Files
    If Right(f.Name,  3 ) = "xls" Then
        Set objWb = objXL.Workbooks.Open(f.Path)
        For i =  1  To objWb.PivotCaches.Count
            objWb.PivotCaches(i).RefreshOnFileOpen = False
        Next
        For i =  1  To objWb.Sheets.Count
            For j =  1  To objWb.Sheets(i).QueryTables.Count
                objWb.Sheets(i).QueryTables(j).RefreshOnFileOpen = False
'Что если добавить сюда 
'objWb.Sheets(i).QueryTables(j).Refresh
            Next
        Next

'Думаю из-за этого блока косяк, почему 3 RefreshAll ? 
        objWb.RefreshAll
        objWb.RefreshAll
        objWb.RefreshAll
        objXL.CalculateFull
        objWb.Save
        objWb.Close
        Set objWb = Nothing
    End If
Next
objXL.Quit
Set objXL = Nothing

Set f = Nothing
Set FSO = Nothing
MsgBox "Vse"
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]