2011-07-26 22 views
4

我有一個超鏈接的Excel工作表。其中一些是電子郵件地址。
當用戶單擊超鏈接,我確定它是否是一個電子郵件,使用Worksheet_FollowHyperlink(ByVal Target As Hyperlink)Target.Address like "mailto:*"如何取消vba followhyperlink?

我現在想要的是取消默認超鏈接行爲並打開電子郵件客戶端自己,編程。這樣,我可以提供默認消息並添加附件。

我試過使用Cancel = True但它不起作用。 我不喜歡自定義超鏈接,因爲excel自動生成電子郵件鏈接。

這有可能嗎?
打開超鏈接似乎發生在另一個線程上。

+1

這似乎是一個挑戰性的問題我的猜測是你必須用FollowHyperlink事件連接你自己的自定義子例程,但是我還沒有找到一個描述這個的資源。我試圖改變我所能想到的一切,而點擊仍然引發了鏈接的目的地。作爲一種解決方法,您可以將文檔中的所有超鏈接轉換爲純文本並查找您正在查找的超鏈接。 – jonsca

+0

如果沒有其他的工作,將不得不嘗試。 – neXus

回答

4

無法阻止單擊超鏈接。您可以通過在Worksheet_FollowHyperlink子中設置斷點來自行測試。 Excel在之前的鏈接執行代碼。

看不到任何事件過程,這將有助於干預和防止行爲。

我可以給的另一個提示是prevent Excel from creating hyperlinks或通過vba與Worksheet_Change事件。
接下來,您可以攔截帶Worksheet_SelectionChange的peuso-click並檢查單元是否包含郵件地址。

最後但並非最不重要的,如果你不知道電子郵件客戶端是Outlook中,你也許可以得到新建的郵件添加附件,收件人,郵件...

+0

這就是我所害怕的。 但我確實知道客戶是前景。你知道我怎樣才能得到新創建的電子郵件的參考? – neXus

+0

也許你可以檢查草稿文件夾? http://vbadud.blogspot.com/2008/04/check-outlook-drafts-folder-for.html。爲了獲得更好的答案,您可以提出一個新問題並將其鏈接到此處,以便SO用戶可以查看標籤:vba或tag:outlook-vba :) – JMax