簡體   English   中英

如果Excel工作簿打開然后... VBA

[英]if Excel Workbook is open then… VBA

我怎么能寫代碼說。

    Dim xlApp As Excel.Application
    Dim xlWorkbook As Excel.Workbook
    Dim xlWorksheet As Excel.Worksheet

如果一個工作簿已經打開然后....

    Set xlApp = GetObject(, "Excel.Application")

    elseif xlApp is nothing then
    Set xlApp = New Excel.Application
    xlApp.Visible = True
    Set xlWorkbook = xlApp.Workbooks.Open("E:\InspectionCreator\InspectionSheet.xlsx")
End if

我不希望它必須是一個特定的工作簿,我似乎無法在互聯網上找到任何工作簿。 任何幫助都是極好的。

首先嘗試使用getobject:如果它拋出錯誤,那么使用createobject:

  Dim xlApp As Excel.Application

  On Error Resume Next
  Set xlApp = GetObject(, "Excel.Application")
  On Error GoTo 0

  If xlApp Is Nothing Then
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
  End If

我曾經運行的代碼與Tim的代碼非常相似,直到Kevin Jones在專家交流帖中指出我將在此重復(因為EE帖子在付費專區后面)

“請注意,使用CreateObject函數通過自動化啟動Excel時,Excel不會加載任何正常自動加載的加載項或其他工作簿。這不是啟動用戶將使用的Excel會話的好方法。 Excel應用程序實例不使用Excel以外的任何應用程序進行自動化,Excel應用程序必須使用非自動化方式啟動。下面的代碼說明了執行此操作的步驟。代碼首先嘗試獲取現有應用程序實例的自動化句柄如果找不到現有實例,則使用Shell命令啟動新實例。“

 Dim ExcelApplication As Object
   Dim TimeoutTime As Long

   On Error Resume Next
   Set ExcelApplication = GetObject(, "Excel.Application")
   On Error GoTo 0
   If ExcelApplication Is Nothing Then
       Shell "Excel.exe"
       TimeoutTime = Timer + 5
       On Error Resume Next
       Do
           DoEvents
           Err.Reset
           Set ExcelApplication = GetObject(, "Excel.Application")
       Loop Until Not ExcelApplication Is Nothing Or Timer > TimeoutTime
       On Error GoTo 0
   End If
   If ExcelApplication Is Nothing Then
       MsgBox "Unable to launch Excel."
   Else
       ' Do something with the Excel instance...
   End If

這可能是在錯誤的方向,但這是我過去使用的東西..

    If Workbooks.Count > 1 Then 'Or in your case = 0
       'Do Something Here'
    Else
       'Do Something Else'
    End If

這樣它會告訴你是否有多個工作簿打開。 否則聽起來你正在尋找特定的東西是否開放。

希望有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM