[英]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.