我的这个程序的目标是通过选择活动行中的单元格值来打开文件夹中的图片。
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:\926_TM\03_LocalExchange\Tracking_and_Labeling\LabEquipment\pictures"
Workbooks.Open picture
End Sub
我正在尝试使用所选单元格中的值作为所选文件夹中图片文件的名称,即我要打开的图片。
我也为ActiveRow
获得了-1的值任何帮助都会很棒!
答案 0 :(得分:1)
ActiveRow是Long,因此您无法选择一行并说这是一个数字。你只需写
ActiveRow = ActiveCell.Row
在即时窗口中,如果你写?行(ActiveCell.Row)。选择,它将返回一个布尔值,而不是一个数字。
同样要打开文件,您应该使用FollowHyperlink方法:
来自msdn:
ActiveWorkbook.FollowHyperlink Address:="http://example.microsoft.com"
您的链接当然会替换示例中的链接。
picture = "P:\926_TM\03_LocalExchange\Tracking_and_Labeling\LabEquipment\pictures\" & Cells(ActiveRow, 6).Value
ActiveWorkbook.FollowHyperlink Address:=picture
答案 1 :(得分:1)
您无法使用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:\926_TM\03_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变量。