2013-12-10 5 views
1

Я искал это сообщество и другие, и у меня все еще возникают трудности с его работой.VBScript - Запуск макроса в скрипте для Excel

Я хотел бы иметь скрипт VB, который, когда я его выполню, откроет документ Excel, запустит скрипт (макрос) и закроет excel.

Макрос не существует в документе, я открываю, поэтому я хотел бы иметь макрос в VB скрипт

Я попытался изменить это, но не повезло. Когда я ввожу свой макрокоманд, это терпит неудачу. Я понимаю, что VBS и VBA разные, но я тоже не очень опытен.

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls") 
     Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
     strCode = _ 
     "sub test()" & vbCr & _ 
     " msgbox ""Inside the macro"" " & vbCr & _ 
     "end sub" 
     xlmodule.CodeModule.AddFromString strCode 
objWorkbook.SaveAs "c:\scripts\test.xls" 
objExcel.Quit 

Это макрос, который я пытаюсь объединить в этот сценарий VB.

Sub Billing_Cleanup() 

    Columns("A:A").Select 
    Selection.Delete Shift:=xlToLeft 
    Rows("1:8").Select 
    Range("A8").Activate 
    Selection.Delete Shift:=xlUp 
    Columns("E:E").Select 
    Selection.ClearContents 
    ChDir "C:\Billing Export" 
    ActiveWorkbook.SaveAs FileFormat:=xlCSV, Local:=True, CreateBackup:=False 
    Application.WindowState = xlMinimized 
    Application.WindowState = xlNormal 
    Application.DisplayAlerts = False 
    ActiveWorkbook.Close 
    Application.Quit 
End Sub 

Любая помощь была бы принята с благодарностью!

+0

, что не работает в данный момент? –

ответ

0

Я не могу только догадываться, что не работает для вас, но слияния/замены макрос должен быть прямой ...

Заменить текущий код в файл VBScript с ниже, сохранить и запустить увидеть, если это то, что вы хотите

Set objExcel = CreateObject("Excel.Application") 
objExcel.Visible = True 
objExcel.DisplayAlerts = False 
Set objWorkbook = objExcel.Workbooks.Open("C:\scripts\test.xls") 
     Set xlmodule = objworkbook.VBProject.VBComponents.Add(1) 
     strCode = _ 
     "Sub Billing_Cleanup()" & vbCr & _ 
     " Columns(""A:A"").Select" & vbCr & _ 
     " Selection.Delete Shift:=xlToLeft" & vbCr & _ 
     " Rows(""1:8"").Select" & vbCr & _ 
     " Range(""A8"").Activate" & vbCr & _ 
     " Selection.Delete Shift:=xlUp" & vbCr & _ 
     " Columns(""E:E"").Select" & vbCr & _ 
     " Selection.ClearContents" & vbCr & _ 
     " ChDir ""C:\Billing Export""" & vbCr & _ 
     " ActiveWorkbook.SaveAs FileFormat:=xlCSV, Local:=True, CreateBackup:=False" & vbCr & _ 
     " Application.WindowState = xlMinimized" & vbCr & _ 
     " Application.WindowState = xlNormal" & vbCr & _ 
     " Application.DisplayAlerts = False" & vbCr & _ 
     " ActiveWorkbook.Close" & vbCr & _ 
     " Application.Quit" & vbCr & _ 
     "End Sub" 
     xlmodule.CodeModule.AddFromString strCode 

objExcel.Application.Run "test.xls!Billing_Cleanup" 
objWorkbook.Save 
objExcel.Quit 

Примечания дополнительного " двойной кавычки, чтобы избежать кавычек внутри строки

+0

Жаль, что вы не уточнили. Я получал синтаксическую ошибку в строке 7 char 1. Это было разрешено, если вы правильно написали макрос. Я теперь получаю Неизвестную ошибку времени выполнения на строке 25 char 1. Спасибо за помощь. – jrd

+0

@ user3087335 можете ли вы запустить макрос в своей книге без использования файла VBScript и убедиться, что сам встроенный макрос работает правильно? –

+0

Когда я запускаю этот макрос в excel, он отлично работает. – jrd

Смежные вопросы