2015-08-25 52 views
0

我這個程序的目標是打開一個文件夾中的圖片,通過選擇活動行中的單元格值,即使用該行來完成。使用VBA宏要打開鏈接到圖片

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 

我試圖從選定使用的值單元格作爲所選文件夾中圖片文件的名稱,我想打開該圖片。

也是我得到的值-1爲ActiveRow

任何幫助將是巨大的!

+0

「Workbooks.Open」方法用於打開工作簿,而不是圖片。 – Soulfire

+0

那它會是'applications.open'嗎? – Pwoods

+0

技術上它是'應用程序。Workbooks.Open',但不需要應用程序限定符。 – Soulfire

回答

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變量。

+0

工作出完美謝謝! – Pwoods

1

ActiveRow是一個長,所以你不能選擇一行,並說這是一個數字。您只需編寫

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