簡體   English   中英

通過VBA打開多個Non-Office文件

[英]Opening multiple Non-Office files through VBA

假定此宏可以在Excel文檔的列表中打開多個超鏈接的CAD文件。 我必須在我們的基礎架構中使用此列表(使用excel單元,而不是下拉列表)。

遇到第一個實例並打開第一個文件后,代碼停止。 我認為這是因為當打開非辦公應用程序時,宏會停止,因為此時excel不是活動的應用程序。

Sub OpenCadFiles()

  Application.ScreenUpdating = False
  Application.DisplayAlerts = False

  Dim excel As Workbook
  Set excel = ActiveWorkbook

  Dim j As Long
  For j = 32 To 133 Step 1

      If ActiveSheet.Cells(j, 14).Value <> "" And Rows([j]).EntireRow.Hidden = False Then
          URL = Cells(j, 14).Text
          'ShellExecute "explorer.exe " & URL, vbNormalFocus
          ThisWorkbook.FollowHyperlink URL
          excel.Activate
      Else
      End If
  Next j

  Application.ScreenUpdating = True
  Application.DisplayAlerts = True

End Sub

我的假設正確嗎,這在excel VBA中是不可能的嗎? 如果沒有,有人知道這樣做的方法嗎?

該方法幾乎可行。 您應該謹慎使用ActiveSheet(或Active),因為在宏運行時用戶可以更改應用程序。 例如,如果宏需要很長時間並且用戶同時檢查他或她的電子郵件,則尤其如此。 更好的方法是:

Sub OpenCadFiles()
  Application.ScreenUpdating = False
  Application.DisplayAlerts = False

  Dim currentWorkbook As Workbook
  Set currentWorkbook = ActiveWorkbook

  Dim currentWorksheet As Worksheet
  Set currentWorksheet = ActiveSheet

  Dim URL As String
  Dim j As Long
  For j = 32 To 133
      If currentWorksheet.Cells(j, 14).Value <> "" And Rows([j]).EntireRow.Hidden = False Then
          URL = currentWorksheet.Cells(j, 14).Text
          currentWorkbook.FollowHyperlink URL
      End If
  Next j

  Application.ScreenUpdating = True
  Application.DisplayAlerts = True
End Sub

通過僅使用currentWorkbook和currentWorksheet一次,可以確保始終進行正確的引用。

暫無
暫無

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

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