使用VBA宏打开Link图片

Using VBA Macro To open Link to picture

我的这个程序的目标是通过在活动行中选择一个单元格值来打开文件夹中的图片,我正在使用该行来执行此操作。

picture = Cells(ActiveRow, 6).Value

我收到 运行 时间错误“1004”应用程序定义或对象定义的错误

这是我的完整代码

Sub Picture_Click()

   Sheets("Master").Unprotect Password:="Conti1"
   Sheets("Records").Unprotect Password:="Conti1"

   Dim picture As String
   Dim ActiveRow As Long


   Worksheets("Master").Activate

        ActiveRow = Rows(ActiveCell.Row).Select
        picture = Cells(ActiveRow, 6).Value

ChDir"P:6_TM_LocalExchange\Tracking_and_Labeling\LabEquipment\pictures"

    Workbooks.Open picture

End Sub

我正在尝试使用所选单元格中的值作为所选文件夹中图片文件的名称,即我要打开的图片。

另外我得到的 ActiveRow 值为 -1

任何帮助都会很棒!

ActiveRow 是一个 Long,因此您不能 select 一行并说它是一个数字。你只需写

ActiveRow = ActiveCell.Row

在立即数 window 中,如果你写 ?Rows(ActiveCell.Row).Select,它将 return 一个布尔值,而不是一个数字。

另外,要打开文件,您应该使用 FollowHyperlink 方法:

来自 msdn:

ActiveWorkbook.FollowHyperlink Address:="http://example.microsoft.com"

您的 link 当然会替换示例中的那个。

picture = "P:6_TM_LocalExchange\Tracking_and_Labeling\LabEquipment\pictures\" & Cells(ActiveRow, 6).Value
ActiveWorkbook.FollowHyperlink Address:=picture

无法使用Workbooks.Open方法打开图片,因为该方法专用于打开工作簿。

一种选择是使用 Shell 命令打开图片。在此示例中,我将打开名为 Test.png

的图片文件夹中的图片
Private Sub OpenPic()
        Shell "mspaint.exe C:\Users\USERNAME\Pictures\Test.png"
End Sub

这将在画图中打开图片。

根据您的代码调整此方法:

Sub Picture_Click()

   Sheets("Master").Unprotect Password:="Conti1"
   Sheets("Records").Unprotect Password:="Conti1"

   Dim picture As String
   Dim ActiveRow As Long


   Worksheets("Master").Activate

   ActiveRow = ActiveCell.Row
   picture = Cells(ActiveRow, 6).Value

   Shell "mspaint.exe P:6_TM_LocalExchange\Tracking_and_Labeling\LabEquipment\pictures\" & picture

End Sub

这假定 Activerow, 6 中的值包括文件扩展名。

顺便说一句:我要补充一点,您根本不需要定义 ActiveRow,可以按原样使用它。

所以这个:

ActiveRow = ActiveCell.Row
picture = Cells(ActiveRow, 6).Value

可以重写为:

picture = Cells(ActiveCell.Row, 6).Value

并且您可以完全省略 ActiveRow 变量。