2014-01-24 15 views
1

我試圖用VBA將文件(任何類型)嵌入到我的Word文檔中。下面是一段摘錄,展示了我如何嘗試這樣做。我能夠成功嵌入文件,但用於嵌入文件的圖標不正確。我對MSDN documentation和Google搜索的評論讓我相信省略IconIndex和IconFileName會提示VBA選擇默認圖標......但這似乎並沒有發生(請參見下圖)。我認爲我必須錯過一步?通過VBA嵌入文件時顯示正確的圖標

Option Explicit 

Sub test_macro() 

' Attach File 

    Selection.InlineShapes.AddOLEObject _ 
     filename:="C:\newfile.docx", _ 
     LinkToFile:=False, _ 
     DisplayAsIcon:=True, _ 
     IconLabel:="This is my file" 
End Sub 

結果:

Embedded File

注:使用Word 2007

回答

0

你需要額外的參數添加到.AddOLEObject method這是IconFileName:=。基於宏錄製看起來我的電腦如下:

' Attach File 
    Dim strFilePath As String 
     strFilePath = "C:\newfile.docx" 

    Selection.InlineShapes.AddOLEObject _ 
     FileName:=strFilePath, _ 
     LinkToFile:=False, _ 
     DisplayAsIcon:=True, IconFileName:= _ 
     "C:\PROGRA~1\MICROS~2\Office12\WINWORD.EXE", _ 
     IconLabel:="This is my file" 

enter image description here

+0

謝謝,不過這種方法只只有*如果你想嵌入一個文件。如果你想嵌入PDF或Excel,該怎麼辦?爲所有可能的類型構建一個查找表是不切實際的,因爲Windows應該已經知道每個文件擴展名都有什麼圖標,所以不需要這樣做。此外,當我手動執行此操作時,Word會選取正確的圖標! :)似乎在某處存在一個缺失的難題。 – Aquadisco

+0

@Aquadisco,真假。可能有更好的解決方案,但並不複雜。你只需要找到一些'* .ico'文件,它們將代表其他類型文件的圖標。看,這是我的PDF文件的本地路徑,我將使用'IconFileName'參數:''C:\ Windows \ Installer \ {AC76BA86-7AD7-1033-7B44-AB0000000001} \ SC_Reader.ico「。如果我經常這樣做,我會將一些圖標放在特殊文件夾中以便快速使用它們。 –

+0

@Aquadisco,還有一件事 - 在你的宏中,你錯過了決定哪個圖標應該附加的代碼的重要部分。因此,我不能同意,與手動附加文件相比,「缺少一部分難題」。 –

0

您需要添加IconFileName並指出它WINWORD.EXE並設置iconIndex 0

+0

如果你想downvote留下一個理由,尤其是在一年後...... – Sorceri

+0

作爲winword.exe的HardCoding IconFileName將始終使圖標顯示爲Word文檔,即使該文件是PDF或Excel文檔。這個問題問到任何類型的文件,而不僅僅是文字文件。請參閱http://stackoverflow.com/questions/32235897/how-to-embed-documents-using-vba以獲取基於用戶機器和嵌入文件類型的靈活圖標標籤。 – Yaegz