【问题标题】:Opening multiple Non-Office files through VBA通过 VBA 打开多个非 Office 文件
【发布时间】:2015-11-25 21:56:50
【问题描述】:

此宏假设在 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 中是不可能的吗?如果没有,有人知道这样做的方法吗?

【问题讨论】:

    标签: excel vba file loops hyperlink


    【解决方案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,您可以确保始终进行正确的引用。

    【讨论】:

    • 太棒了!做到了。我也学到了一些新东西。谢谢!
    • 优秀。不要忘记投票并接受您喜欢的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多