打开Excel文件后,Excel交互不起作用

时间:2014-02-11 18:01:06

标签: excel vba excel-vba outlook

我在OUTLOOK VBA中使用此代码打开Excel工作簿:

'~~> BEGINNING OF EXCEL CODE <~~
Dim xlApp As Excel.Application
Dim sourceWB As Excel.Workbook
Dim sourceWS As Excel.Worksheet

Set xlApp = New Excel.Application

With xlApp
    .Visible = True
    .EnableEvents = True
    .UserControl = False
    .DisplayAlerts = False
    .AskToUpdateLinks = False
End With


strFile = scPATH & "Seattle ScoreCard " & Format(prevSCdate, "mm") & "." & Format(prevSCdate, "dd") & "." & Format(prevSCdate, "yy") & ".xlsm"

Set sourceWB = xlApp.Workbooks.Open(strFile, , False, , , , , , , True)
Set sourceWS = xlApp.sourceWB.Worksheets(Chr(34) & "Week " & Format(prevSCdate, "ww") & " " & Format(prevSCdate, "mm") & "." & Format(prevSCdate, "dd") & "." & Format(prevSCdate, "yy") & Chr(34))

'~~> CANT GET THIS TO RUN ONCE EXCEL OPENS <~~

sourceWS.Copy Before:=Sheets(2)

'~~>

...

它会打开正确的文件和所有内容,但一旦打开它就不会执行sourceWS.Copy行。我已经通过在Excel文件中直接从VBA执行该命令来验证该命令。我也激活了Excel库。

有任何帮助吗?结果就好像最后一行不存在一样。它打开文件然后没有任何反应。

1 个答案:

答案 0 :(得分:1)

第一件事:

Set sourceWS = xlApp.sourceWB.Worksheets(...)

在这一行中,您尝试调用名称为xlApp的{​​{1}}对象(类Excel.Application的实例)的属性,但当然,{{ 1}}不支持名为sourceWB的属性。

除非您使用xlApp,否则会给您一个错误 - 如果是这样,请小心使用它,请参阅image to my another answer以获取解释原因: < / p>

因此,在打开工作簿并且Outlook知道sourceWB属于On Error Resume Next时,您已将sourceWB分配给xlApp。这意味着您不应该在此上下文sourceWB中使用它。将上面的行更改为

xlApp

另一件事是使用xlApp.sourceWB的完全限定名称(如果在执行代码时有多个打开的工作簿,则仅使用Set sourceWS = sourceWB.Worksheets(...) 可能会触发错误)。变化:

Sheets(2)

Sheets(2)