VBA使用Outlook打开excel而不是打开

时间:2015-03-10 17:41:50

标签: excel vba outlook outlook-vba

您好,感谢您的帮助。

我在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应用程序打开并 将工作簿对象 重置为我想要的新工作簿"

如果有人可以帮助处理那些非常棒的附加代码。

2 个答案:

答案 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

因此,您将能够重新使用它来关闭和打开新工作簿。