2012-07-17 74 views
0

我有一個腳本可以抓取某個文件夾中的所有文檔,並列出該文件夾中的所有文件。然後它會創建一個鏈接,從Excel內部打開這些文件。我想知道是否有辦法將它放在一個shell中,以便文件只在記事本中打開。 ,我使用的是現在的代碼是:強制超鏈接打開記事本中的目標文件

Sub MakeLink(ByVal cell As Range, ByVal url As String, ByVal txt As String, ByVal tooltip_text As String) 
     ActiveSheet.Hyperlinks.Add _ 
      Anchor:=cell, _ 
      Address:=url, _ 
      ScreenTip:=tooltip_text, _ 
      TextToDisplay:=txt 
    End Sub 

Sub Portfolios() 

    Range("A1:Z200").Clear 
    Dim objFSO As Object 
    Dim objFolder As Object 
    Dim objFile As Object 
    Dim ws As Worksheet 
    Range("A3").Font.Bold = True 


    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set ws = Worksheets("Library") 


    'Get the folder object associated with the directory 
    Set objFolder = objFSO.GetFolder("C:\Portfolios") 
    ws.Cells(3, 1).Value = "The files found in " & objFolder.Name & " are:" 

    'Loop through the Files collection 
    For Each objFile In objFolder.Files 
     'ws.Cells(ws.UsedRange.Rows.Count + 3, 2).Value = objFile.Name 
     MakeLink ws.Cells(ws.UsedRange.Rows.Count + 3, 2), objFile, objFile.Name, objFile.Name 

    Next 

    'Clean up! 
    Set objFolder = Nothing 
    Set objFile = Nothing 
    Set objFSO = Nothing 
End Sub 

我知道我必須做的沿MakeLink = Shell("C:\WINDOWS\notepad.exe", 1)線的東西,但我似乎擊中有點暴牙的在何處,這將適合。

感謝, ˚F

回答

1

文件將打開無論是文件類型的默認程序。

如果你想強制他們在記事本中打開,那麼你將不得不編寫一些代碼來處理事件:你可以從Target參數中獲取單元格文本,並從那裏獲取記事本。

爲了防止超鏈接將用戶帶到其他地方的問題,只需將目標地址設置爲與包含超鏈接的單元格相同的單元格。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 

    Dim fPath As String, res 

    fPath = Target.TextToDisplay 
    res = Shell("notepad.exe """ & fPath & """", vbNormalFocus) 

End Sub 

要創建超鏈接:

Sub MakeLink(rng As Range, txt As String) 
    Dim addr As String 

    addr = "'" & rng.Parent.Name & "'!" & rng.Address(False, False) 
    rng.Parent.Hyperlinks.add Anchor:=rng, Address:="", _ 
        SubAddress:=addr, TextToDisplay:=txt 

End Sub 
+0

嗯,我想這和它依舊走的是超鏈接機器關聯到程序。 – fiqbal 2012-07-17 16:56:39

+0

您是否已將超鏈接中的地址更改爲不指向該文件,而是返回包含鏈接的單元格? 「TextTodisplay」需要是完整路徑,或者您可以使用文件名並在事件處理程序中添加父文件夾。 – 2012-07-17 17:08:44

+0

是的,我改變了目標。我也嘗試將Sub嵌入到Portfolios子文件夾中,但這也不起作用 – fiqbal 2012-07-17 17:21:41

相關問題