2013-08-15 3 views
1

Недавно я научился программировать в VBA и получил некоторую чрезвычайно полезную помощь, прочитав ранее заданные вопросы и ответы на этом сайте. Тем не менее, я столкнулся с проблемой в одной из моих программ, которая, как представляется, не рассматривается очень напрямую. Поэтому я попрошу об этом здесь.Получение «Невозможно выполнить макрос ...» Ошибка в VBA

Я создаю макрос Powerpoint, который автоматически обновит некоторые слайды новыми данными. Для одного слайда, содержащего таблицу excel, я хочу, чтобы макрос открыл файл excel, запустил существующий макрос в файле excel, чтобы заполнить электронную таблицу новыми данными и, наконец, скопировать таблицу на слайд PowerPoint. Мой код до сих пор (без копии по части) заключается в следующем:

Private Sub GetProposals() 
    Dim myXL As Excel.Application 
    Dim myXLS As Excel.Workbook 
    Dim ws As Excel.Worksheet 

    Set myXL = New Excel.Application 
    Set myXLS = GetObject("K:\Jackson\Proposal Summary Master.xlsm") 
    Set ws = myXLS.Sheets(1) 
    ws.Visible = xlSheetVeryHidden 

    myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL" 
    myXL.Run ("'K:\Jackson\Proposal Summary Master.xlsm'!BABox_Change") 
End Sub 

Он работает правильно, пока не достигнет «myXL.Run ...» линии. Я получаю сообщение с сообщением «Ошибка времени выполнения 1004»: не удается запустить макрос «K: \ Jackson \ Proposal Summary Master.xlsm»! BABox_Change '. Макрос может быть недоступен в этой книге или все макросы могут быть отключены. »

Макрос excel отлично работает, когда я открываю файл напрямую и запускаю его таким образом. Я немного зациклен на том, что я должен делать дальше. Есть ли у кого-нибудь какие-то предложения?

+0

Это может быть очень сложно при вызове макросов в другой файл в другом приложении. Вы должны заставить Excel открыть этот файл, прежде чем пытаться вызвать этот макрос. И удалите путь к папке в аргументе .Run. Зависит от того, как написан макрос в Master.xlsm, он ничего не может произвести. – PatricK

ответ

0

Проблема может быть в том, что вы не открываете книгу. Ключом к этому, однако, было бы удостовериться, что объекты будут выпущены после выполнения кода, таким образом, файл не «заблокирован» на файл Powerpoint или дополнительных «скрытых» процессов/экземпляры Excel остаются открытыми.

Private Sub GetProposals() 
    Dim myXL As Excel.Application 
    Dim myXLS As Excel.Workbook 
    Dim ws As Excel.Worksheet 

    Set myXL = New Excel.Application 
    Set myXLS = myXL.Workbooks.Open("K:\Jackson\Proposal Summary Master.xlsm") 
    myXLS.Application.DisplayAlerts = False 
    Set ws = myXLS.Sheets(1) 
    ws.Visible = xlSheetVeryHidden 

    myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL" 
    myXLS.Application.Run ("BABox_Change") 

    myXLS.Application.DisplayAlerts = True 
    myXLS.Close(true) ' Change to false if you don't want to save Changes 


    Set myXLS = Nothing 
    Set myXL = Nothing 
    Set ws = Nothing 
End Sub 
+0

Это сделало трюк. Большое спасибо! – user2684387

0

Brilliant., что работал п или меня тоже. Я просто приспособил часть

myXLS.Sheets("VLOOKUP").Range("J1").Value = "EPL" 
     myXLS.Application.Run ("BABox_Change") 

мои файлы

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