您好,感谢您的帮助。
我在Outlook 2010中有以下代码& 2007:
Sub Openexcel()
Dim xlApp As Object
Dim sourceWB As Workbook
Dim sourceSH As Worksheet
Dim strFile As String
Set xlApp = CreateObject("Excel.Application")
With xlApp
.Visible = True
.EnableEvents = False
End With
strFile = "E:\All documents\susan\work\Excel projects\saving files to directory Clean.xls"
Set sourceWB = Workbooks.Open(strFile, , False, , , , , , , True)
Set sourceSH = sourceWB.Worksheets("Sheet2")
sourceWB.Activate
End Sub
这个代码在我打开outlook后第一次使用它时工作,但如果我关闭excel文件,我就不能再使用它了。我需要重新打开这本工作书大约3次
问题在 Outlook VBA open excel 看来有同样的问题,但我不明白答案。
"我明白了。我正在打开一个不同的工作簿,然后在我尝试打开第二个工作簿之前将其关闭,这就是干扰它。为了解决这个问题,我保持excel应用程序打开并 将工作簿对象 重置为我想要的新工作簿"
如果有人可以帮助处理那些非常棒的附加代码。
答案 0 :(得分:1)
在Excel interactions don't work after Excel file opened找到了很棒的代码。
为什么我上周找不到谁知道谁。
Sub Openexcel()
' change
Dim xlApp As Excel.Application
Dim sourceWB As Excel.Workbook
Dim sourceSH As Excel.Worksheet
'change
Set xlApp = New Excel.Application
With xlApp
.Visible = True
.EnableEvents = False
'.UserControl = False
'.DisplayAlerts = False
'.AskToUpdateLinks = False
End With
strFile = "E:\All documents\susan\work\Excel projects\saving files to directory Clean.xls"
'change
Set sourceWB = xlApp.Workbooks.Open(strFile, , False, , , , , , , True)
Set sourceSH = sourceWB.Worksheets("Sheet2")
sourceWB.Activate
End Sub
谢谢你们所有的想法。
答案 1 :(得分:0)
您需要在全局范围内声明Excel Applicaton并使用它来打开另一个工作簿。不要创建用于打开新文件的新Excel实例。您可能会发现How to automate Microsoft Excel from Visual Basic文章有用。
例如,在事件处理程序之外声明Application对象:
Dim oXL As Excel.Application
Private Sub Command1_Click()
Dim oWB As Excel.Workbook
因此,您将能够重新使用它来关闭和打开新工作簿。