此宏假设在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中是不可能的?如果没有,有没有人知道这样做的方法?
答案 0 :(得分:1)
这种方法几乎可行。您应该谨慎使用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,您可以保证始终正确引用。