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

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

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

так машина должна это сама делать - для этого скрипт и нужен
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37065231
Yuri_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37065446
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37065453
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,
Код: plaintext
objXL.Visible = false
нужен ли?
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37065458
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtim,

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

Спасибо большое!!!
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37389090
gaint_re
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди добрые, а как сделать чтобы он перебирал все файлы в папке и обновлял их? В VB не очень разбираюсь :)
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391260
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.
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
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391313
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: gaint_re
> Люди что я делаю не так ??


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


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391346
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.
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
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391366
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: gaint_re


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


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

та же ошибка
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391529
gaint_re
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37391535
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: gaint_re


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


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

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

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

Sleep?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
    #37481074
gaint_re
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос,
нет он просто не хочет обновлять таблицы порядковый номер 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
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как обновить сводные таблицы файла excel скриптом или командной строкой не открывая excel?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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