Board logo

標題: 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)
  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
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)