頁: [1] 2 3
|
 |
|
作者
|
主題: 自動超連結 (開啟網址和各類型檔案) (閱讀 7916 次)
|
Eileen
高中生
離線
文章: 227
|
請教各位大大 我已經閱讀了自動超連結的文章了 也親自做了試驗 但是仍無法成功 可以請大大幫我看看哪裡出了問題嗎?
[附件已被管理員刪除]
|
|
|
|
« 最後編輯時間: 2005-10-19, 19:36:29 由 leonchou »
|
已記錄
|
|
|
|
呆呆
高中生
離線
文章: 264
|
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 沒用,我找了老半天也找不到  金害
|
|
|
|
|
已記錄
|
|
|
|
|
|
|
|
leonchou
論壇維護群
離線
文章: 1160
|
忽然想到更簡便的方式 -- 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
|
忽然想到更簡便的方式 -- 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
|
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
|
對於一個工作表如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
|
當然, 一定有人有所疑問,為什麼要分開呢 寫在一起不就好了,但是這您看看 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 這個 title的意思是什麼, Worksheet_SelectionChange 就是您改變選取的工作表意思 而 引數 Target 就是 該工作表所選取後的範圍 ,而在任何一個活頁簿中,所有的工作表都是一樣的事件title和引數 ,那您想想,如果都寫在ThisWorkBook中 Excel要反應那一個事件呢, vba不支援引發事件引數辨識功能
|
|
|
|
« 最後編輯時間: 2005-10-19, 12:55:01 由 呆呆 »
|
已記錄
|
|
|
|
呆呆
高中生
離線
文章: 264
|
那難道在一個活頁簿中有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
|
|
|
|