返回列表 上一主題 發帖

Excel Vba呼叫outlook寄信的引用問題

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: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)
  1. Private Sub test()

  2.     Dim path As String
  3.     path = ThisWorkbook.path & "\test.docx"

  4.         Dim WordApp As Object
  5.         Set WordApp = CreateObject("Word.Application")
  6.         
  7.         With WordApp
  8.             .Visible = True
  9.             .Documents.Open path
  10.             .Activate
  11.             .Selection.homekey Unit:=6 'late binding 必須要用數字6表示 不能用 wdStory
  12.         End With
  13.         
  14.         WordApp.Documents.Open path
  15.         WordApp.Visible = True 'New Apps will be hidden by default, so make visible
  16.         
  17.         WordApp.Selection.Find.Execute FindText:="XXX"
  18.         WordApp.Selection.Move Unit:=12, Count:=1  'late binding 必須要用數字12表示 不能用 wdCell
  19.         WordApp.Selection.InsertAfter "OOO"
  20.         WordApp.Documents.Save

  21. End Sub
複製代碼

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題