2012-09-25 130 views
1

在我的Office 2010 xlsm工作表中,我創建了一個名爲Image1的固定大小的圖像ActiveX控件。在我看來,下面的宏應該設置圖像路徑爲單元格B3中指定的圖像路徑,但它會失敗,並顯示「運行時錯誤」424':對象需要「錯誤消息在Image1.Picture行。我檢查了imPath等於"C:\some\valid\image\path.jpg"在excel表格中插入圖像

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Address = "$B$3" Then 
     imPath = Range("B3") 
     Image1.Visible = True   
     Image1.Picture = imPath 
     Image1.PictureSizeMode = fmPictureSizeModeZoom 
     Image1.BorderStyle = fmBorderStyleNone  
     Image1.BackStyle = fmBackStyleTransparent 
    End If 
End Sub 

這裏有什麼問題?順便說一句,有沒有什麼辦法來檢查指定的文件是否真的存在?

+1

下面是與提供幫助回答什麼是錯在這裏問題的答案提供一些參考:使用圖像控制(HTTP:// msdn.microsoft.com/en-us/library/aa242027(v=VS.60).aspx)[LoadPicture Function](http://msdn.microsoft.com/en-us/library/aa264946(v = vs。 60).aspx) –

+0

謝謝!我在錯誤的地方尋找...... – Katya

回答

5

快速查看Excel的幫助下,尋找圖片,建議您使用此行:

Image1.Picture = LoadPicture(imPath) 

要檢查文件是否存在,使用FileSystemObject的

Dim fs as variant 
Set fs = CreateObject("Scripting.FileSystemObject") 
fs.FileExists(imPath) 

編輯

順便說一下,您可以使用

imPath = Target.value 

設置Impath的(沒有測試過,但很肯定這一點)

+3

+1擊敗了我。如果你想避免使用FileSystem對象,你也可以這樣做:如果Dir(imPath)<>「」then「,如果Dir返回一個空字符串,那麼路徑無效。 –

+0

謝謝,我喜歡在一個地方有不同的方法!在這種情況下,使用'Dir'找到這個解決方案甚至更好,因爲如果只有一個快速存在檢查,則不需要FSO。 – Jook

+0

感謝您的回答!我會說,正確的是'Dir $(imPath)' – Katya