2015-06-02 3 views
0

В настоящее время я пытаюсь создать .vbs, которыйОткрыть файл Excel, запустите макрос, сохраните его (перезапись)

  1. открывает Excel
  2. запускает макрос
  3. сохраняет его с новой информацией
  4. квиты

Это то, что я до сих пор:

Dim xlApp, xlBook 

Set xlApp = CreateObject("Excel.Application") 
xlApp.DisplayAlerts = False 

Set xlBook = xlApp.Workbooks.Open("C:\test\test.xlsm", 0, True) 

xlApp.Run "test" 
xlbook.Save 
xlBook.Close False 
set xlBook = Nothing 

xlApp.Quit 
Set xlApp = Nothing 

WScript.Echo "Upload is Finished" 
WScript.Quit 

Я получаю «Загрузка закончена», но макрос не сохраняется. Что я делаю не так?

Макрос просто положить что-то из одного листа к другому:

Sub test() 
' 
' test Macro 
' 
    Sheets("Sheet2").Select 
    Range("A1:A10").Select 
    Range("A10").Activate 
    Selection.Cut 
    ActiveSheet.Previous.Select 
    Selection.End(xlToLeft).Select 
    Range("A2").Select 
    ActiveSheet.Paste 
End Sub 
+0

изменения 'xlBook.Close false' к' xlBook.Close' – 0m3r

ответ

2

Из любопытства, почему макрос в Excel? Если вы контролируете Excel через объект, почему бы и не использовать там макрокод?

Dim xlApp, xlBook 

Set xlApp = CreateObject("Excel.Application") 
xlApp.DisplayAlerts = False 

Set xlBook = xlApp.Workbooks.Open("C:\test\test.xlsm", 0, True) 

xlbook.Sheets("Sheet2").Range("A1:A10").Cut 
xlbook.Sheets("Sheet2").Previous.Select 
xlbook.Range("A2").Paste 
xlbook.Save 
xlBook.Close False 
set xlBook = Nothing 

xlApp.Quit 
Set xlApp = Nothing 

WScript.Echo "Upload is Finished" 
WScript.Quit 
+0

Потому что это не «фактическое движение» этого макроса меня интересует, но, будучи в состоянии 1) открытое первенствует 2) Запускаем макрос 3) сохранить процесс, что меня интересует. Фактический макрос, который мне нужно использовать для этого процесса, довольно большой. Если я могу сделать это с помощью небольшого макроса, я должен сделать этот процесс с помощью небольшого макроса. Я дам этот макрос выстрел :) – Harmusch

2
xlBook.Close False 

означает "близко и не сохранить изменения". Может быть, вы хотите

xlBook.Close SaveChanges:=True 
+0

OP сохраняется перед закрытием, я делаю это также, поскольку у меня возникают проблемы при сохранении на закрытии раньше. Я не помню специфику, но это вызывало еще один вопрос, который я обнаружил, что сохранение его раньше позволяло мне передавать параметры, необходимые для подавления вопроса. –

+1

@ DanDonoghue: Ха! - Я пропустил это полностью ... –

+0

xlBook.Close SaveChanges: = True возвращает ошибку при запуске скрипта. Я получаю ошибку «ожидаемого утверждения», если я заменю xlbook.close на xlbook.close SaveChanges: = True :( – Harmusch