昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-07-25, 03:12:02
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: Wink有贊助本論壇經營的會員,請務必來信通知小誌,這樣才能為您更新會員群組喔!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  進階應用專區
| | | |-+  自動超連結 (開啟網址和各類型檔案)
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 2 3 向下 列印
作者 主題: 自動超連結 (開啟網址和各類型檔案)  (閱讀 7916 次)
Eileen
高中生
*
離線 離線

文章: 227


自動超連結 (開啟網址和各類型檔案)
« 於: 2005-10-17, 11:10:09 »

請教各位大大
我已經閱讀了自動超連結的文章了
也親自做了試驗
但是仍無法成功
可以請大大幫我看看哪裡出了問題嗎?

[附件已被管理員刪除]
« 最後編輯時間: 2005-10-19, 19:36:29 由 leonchou » 已記錄
呆呆
高中生
*
離線 離線

文章: 264


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #1 於: 2005-10-17, 18:09:40 »

Option Explicit
Const path1 = "C:\Documents and Settings\Administrator\桌面\旭業總資料\我的\圖片"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim a As Range
 Set a = Target.Cells(1): If a = "" Or a.Column <> 2 Then Exit Sub
 On Error Resume Next
 ActiveWorkbook.FollowHyperlink Address:=path1 & a & ".jpg", _
                 NewWindow:=True
 On Error GoTo 0
End Sub
1.請將上述程式放於sheet1之物件模組中,而不要放於thisworkbook模組中
2.想請教各位大大的是,當開啓檔案時,就會引發alert ,但我找不到可關掉之函數
因為 application.DisplayAlerts 沒用,我找了老半天也找不到 Cry Cry 金害
已記錄
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #2 於: 2005-10-17, 23:44:53 »

若是 IE 直接支援的連結類型 (如網址、HTML文件),
FollowHyperlink 才不會有警告訊息。所以
FollowHyperlink 雖可呼叫關聯程式開啟各類型檔案,
但由於會有這討厭的警告訊息,用
Application.DisplayAlerts 也關不掉,
所以其他類型檔案還是尋求其他方法吧。

參考 API - ShellExecute 方式:
http://www.excelhelp.net/cgi-bin/forum/topic.cgi?forum=8&topic=671
已記錄

呆呆
高中生
*
離線 離線

文章: 264


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #3 於: 2005-10-18, 00:11:31 »

 leonchou 果然博學多聞,為了關掉一個開關,花了我一個小時的時間 Cry Cry
最糟的是,還是沒找到解答 Undecided Undecided
已記錄
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #4 於: 2005-10-18, 10:57:31 »

忽然想到更簡便的方式 --

Set Wsh = CreateObject("WScript.Shell")
Wsh.Run "D:\Documents\test.zip" '壓縮檔
Wsh.Run "D:\Images\test.jpg" '圖檔
Wsh.Run "D:\Temp\test.xls" 'Excel檔
Wsh.Run "http://gb.twbts.com/index.php" '網址

或是更簡單的 --

Shell "cmd /c start D:\Documents\test.zip" '壓縮檔
Shell "cmd /c start D:\Images\test.jpg" '圖檔
Shell "cmd /c start D:\Temp\test.xls" 'Excel檔
Shell "cmd /c start http://gb.twbts.com/index.php" '網址

WSh.Run 和 DOS 的 start 可視同 [開始] > 執行 的動作。

原以為很好用的 FollowHyperlink 真是被比下去了,哈哈~ (苦笑中)
已記錄

Eileen
高中生
*
離線 離線

文章: 227


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #5 於: 2005-10-19, 08:15:36 »

忽然想到更簡便的方式 --

Set Wsh = CreateObject("WScript.Shell")
Wsh.Run "D:\Documents\test.zip" '壓縮檔
Wsh.Run "D:\Images\test.jpg" '圖檔
Wsh.Run "D:\Temp\test.xls" 'Excel檔
Wsh.Run "http://gb.twbts.com/index.php" '網址

或是更簡單的 --

Shell "cmd /c start D:\Documents\test.zip" '壓縮檔
Shell "cmd /c start D:\Images\test.jpg" '圖檔
Shell "cmd /c start D:\Temp\test.xls" 'Excel檔
Shell "cmd /c start http://gb.twbts.com/index.php" '網址

WSh.Run 和 DOS 的 start 可視同 [開始] > 執行 的動作。

原以為很好用的 FollowHyperlink 真是被比下去了,哈哈~ (苦笑中)

請問大大
在你範例中綠色的字應該算是備註不用寫入吧?
請問你的這種方法是不是需要在每一個SHEET中寫呢
不能ㄧ次寫在THISWORK中嗎?
在程式碼中所使用的網址
是指超連結出現的網址嗎
因為我的網址寫上之後並沒有像你一樣出現可以按進去的狀態
感覺上好像錯了@@
在第2行中所謂的圖檔是指所有圖檔嗎?
而第4行的網址是單一網址呢
還是只要我分別輸入每個不同的圖檔編號之後他就會自己做連結呢?
小妹愚笨
請大大在幫我做個解釋好嗎?
已記錄
Eileen
高中生
*
離線 離線

文章: 227


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #6 於: 2005-10-19, 08:35:26 »

Const SW_SHOW = 5
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub test()
Filename = Application.GetOpenFilename(, , "開啟檔案", False)
'Excel檔由Excel開,其它檔由ShellExecute函數開
If LCase(Right(Filename, 3)) <> "xls" Then
  ShellExecute 0, "open", Filename, "", "", SW_SHOW
Else
  Workbooks.Open (Filename)
End If
End Sub

大大
上面的程式碼是在你所提供的網址中看到的
其中Const SW_SHOW = 5
以及Filename, 3
這2句是什麼意思呢?
可以請大大告訴我嗎?
已記錄
呆呆
高中生
*
離線 離線

文章: 264


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #7 於: 2005-10-19, 12:21:20 »

對於一個工作表如sheet1引發的事件就必須寫入該工作表對應的
事件中 ,如你要點該工作表的任一儲存格就顯示該儲存格的位置
就應該在sheet1的
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
事件中寫下程式碼如下
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 msgbox target.address
End Sub
那如果您在sheet2,sheet3........之後也要做相同的動作呢
比較不用腦的方法就是硬幹,直接也將上面的程式碼全部複製到
sheet2,sheet3........的工作表事件中

已記錄
呆呆
高中生
*
離線 離線

文章: 264


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #8 於: 2005-10-19, 12:37:21 »

當然, 一定有人有所疑問,為什麼要分開呢
寫在一起不就好了,但是這您看看
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
這個 title的意思是什麼,
Worksheet_SelectionChange 就是您改變選取的工作表意思
而 引數 Target 就是 該工作表所選取後的範圍
,而在任何一個活頁簿中,所有的工作表都是一樣的事件title和引數
,那您想想,如果都寫在ThisWorkBook中
Excel要反應那一個事件呢, vba不支援引發事件引數辨識功能
« 最後編輯時間: 2005-10-19, 12:55:01 由 呆呆 » 已記錄
呆呆
高中生
*
離線 離線

文章: 264


Re: 自動超連結(經過閱讀做了試驗仍無法成功)
« 回覆文章 #9 於: 2005-10-19, 12:52:23 »

那難道在一個活頁簿中有100個工作表,
那不就要copy 100 份程式碼
下列方法可稍微解決
請在 ThisWorkBook類別模組中新增工作表事件
做以下的宣告
Private WithEvents mySheet As Worksheet

有了以上的宣告就會在視窗上方左邊中的 combobox下拉出
mySheet,而在右方會帶出所有mySheet的事件
如  Private Sub mySheet_SelectionChange(ByVal Target As Range)

這個 title是不是和
Worksheet_SelectionChange(ByVal Target As Range)
很像呢,除了名稱不一樣 ,一個是mySheet一個是Worksheet

那麼你就可以這樣寫了

Private WithEvents mySheet As Worksheet

Private Sub mySheet_SelectionChange(ByVal Target As Range)
 MsgBox Target.Address
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Set mySheet = Sh
End Sub

以上是在任何的worksheet改變儲存格範圍所會出現位址的所有程式碼
已記錄
頁: [1] 2 3 向上 列印 
« 上一篇主題 下一篇主題 »
跳到:  


本頁花了 0.129 秒, 以及 20 次的資料庫查詢.