標題:
Excel Vba呼叫outlook寄信的引用問題
[打印本頁]
作者:
ciboybj
時間:
2019-5-20 18:56
標題:
Excel Vba呼叫outlook寄信的引用問題
大家好
想請問 在excel vba中呼叫outlook寄信時
必須要手動引用outlook object library
我在A電腦編寫excel 中的vba時 有手動引用outlook object library
但當我把檔案拿到B電腦時 就出現錯誤 必須要再重新手動引用outlook object library
才可以正常寄信
想請問有什麼方法 直接把 outlook object library 包裝在vba裡面?
謝謝
作者:
ciboybj
時間:
2019-8-1 23:46
本帖最後由 ciboybj 於 2019-8-1 23:50 編輯
在VBA中也有前期綁定(Early binding)及後期綁定(Late binding)的不同
兩者的優缺點可以參考以下網站的介紹
https://wordmvp.com/FAQs/InterDev/EarlyvsLateBinding.htm
若是使用後期綁定 (Late Binding )則可以不用手動引用相對應的object library
也就是說,在2010版Office中寫好的VBA檔案,拿到不同的電腦,利用2013版Office開啟時,VBA程式應該還是可以運作。
相對的,若VBA是用前期綁定(Early binding) ,在不同版本Office的環境下,很有可能會無法正常使用,必須要手動引用正確版本的object library。
但是利用後期綁定會有一些語法是無法被編譯器辨識,因此要自己查出對應的數字。
以下是一個利用Excel 開啟同資料夾中的 Word(此Word有一個兩欄的表格 其中一欄寫有XXX)
Private Sub test()
Dim path As String
path = ThisWorkbook.path & "\test.docx"
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
With WordApp
.Visible = True
.Documents.Open path
.Activate
.Selection.homekey Unit:=6 'late binding 必須要用數字6表示 不能用 wdStory
End With
WordApp.Documents.Open path
WordApp.Visible = True 'New Apps will be hidden by default, so make visible
WordApp.Selection.Find.Execute FindText:="XXX"
WordApp.Selection.Move Unit:=12, Count:=1 'late binding 必須要用數字12表示 不能用 wdCell
WordApp.Selection.InsertAfter "OOO"
WordApp.Documents.Save
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)