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