請問有關用Marco/VBA在Excel 內顯示圖片

2007-02-17 10:09 pm
在Excel其中一個Column的Cell內,各有一筆圖片的位置資料。這些資料均是指向同一個folder內的圖片如c:\\image\\abc.jpg,如此類推。

有什麼方法,可以用Marco/VBA去參考這個Cell的資料,從而顯示這張圖片。顯示方式最好可以在一個Cell內展示,不過如果是call一個圖片window展示也沒問題。

從我一位朋友的同事得到以下一段coding,應該可以解決我的問題。但由於他實在太忙,不能一步一步教我如何完整執行:

Private Sub Worksheet_Change(ByVal Target As Range)
If (Target = Cells(1, 1)) Then
ActiveSheet.Pictures.Insert (Cells(1, 1))
End If
End Sub

現請問怎樣可以使用以上一段coding?由於不太董Marco/VBA,請詳細說明步驟,如怎樣在Excel的巨集內寫入這段code,怎樣宣告及執行等。

如有其他可行方法,煩請指教一下。謝謝。

祝各位 新年進步、事事順景

回答 (1)

2007-02-21 8:16 am
✔ 最佳答案
首先聲明, 你需有相當的巨集認識, 才可執行你朋友的工作表巨集(不是一般巨集), 因為非常容易因輸入錯資料及其他原因而做成執行巨集失敗。提議你開1個新file來測試:
file name: Book1
Worksheet name: Sheet1
寫入code的方法:
按 Alt + F11→出現module視窗→按檢視→專案總管→左邊多了1個視窗
在 VBA Project (Book 1) 下面的 Sheet1 位置 Double Click
再在主視窗左邊的下拉, 由 一般 改為 Worksheet, 再在右邊下拉選 Change
然後在Private Sub Worksheet_Change(ByVal Target As Range) 及 End Sub 之間貼上你朋友的code, 然後關閉模組視窗, 完成。
此巨集的執行是:
當你在Sheet1 的A1 輸入指定的picture file path, 如 c:\image\abc.jpg
馬上會彈出 abc.jpg
但你朋友的code過於簡單, 很多情況都會出現錯誤, 如:
-- A1 輸入不正確路徑, 或該file並非photo file
-- 在A1 清除內容
-- 在Sheet1 任可 highlight 上 清除內容
-- 在 Sheet1 任何位置進行下拉
尚有其他, 無法盡錄
建議將code 改成:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo sound
If (Target = Cells(1, 1)) Then
ActiveSheet.Pictures.Insert (Cells(1, 1))
End If
Exit Sub
sound:
Beep
End Sub
效果是 如有錯誤, 會發出警告聲, 及停止執行巨集。
我另有意見: 如閣下的VBA/Marco尚未成熟, 巨集內容最好不要牽涉到Excel的上層物件, 如 C 磁碟或 Window系統。


收錄日期: 2021-04-12 18:41:34
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20070217000051KK01672

檢視 Wayback Machine 備份