2010-03-03 115 views
0

我不知道爲什麼我的代碼不工作.. 我有代碼在Access 03中打開一個Word文檔運行郵件合併過程中的vba。 代碼運行時,它會問我標題分隔符是什麼。我在導出文件中將它們指定爲字段分隔符的逗號和記錄分隔符。在我用字確認之後,我得到了一個運行時錯誤。VBA - 郵件合併通過訪問

我得到的錯誤是: 運行時錯誤'5922': Word無法打開數據源。

strExportFullyQualifiedName是一個文本文件,與其中列出的字段名稱一起被導出,用作數據源文件。

我檢查了鏈接並驗證,一切都存在。連接沒有進行。 strExportFullyQualifiedName是txt文件的位置。

With objWordDoc 
     .MailMerge.OpenDataSource _ 
      Name:=strExportFullyQualifiedName, Format:=wdOpenFormatAuto, _ 
      ConfirmConversions:=False, ReadOnly:=False, SubType:=wdMergeSubTypeAccess, AddToRecentFiles:=False 
     .MailMerge.Destination = wdSendToNewDocument 
     .MailMerge.MainDocumentType = wdDirectory 
     .MailMerge.SuppressBlankLines = True 
    End With 

謝謝!

回答

1

你有沒有參考Word庫(代碼窗口 - >工具 - >參考)?如果沒有,你將需要使用值內置常量如wdOpenFormatAuto

編輯再評論

當你有一個文本文件,我不相信你的類型是正確的。嘗試是這樣的:

''To create output, if required 
''DoCmd.TransferText acExportDelim, , "qryMailMerge", strExportFullyQualifiedName, True 

With objWordDoc 
    .MailMerge.OpenDataSource _ 
     Name:=strExportFullyQualifiedName, Format:=wdOpenFormatText 
    .MailMerge.Destination = wdSendToNewDocument 
    .MailMerge.MainDocumentType = wdDirectory 
    .MailMerge.SuppressBlankLines = True 
End With 
+0

是的。它是: Microsoft Word 11.0對象庫 – JK0124 2010-03-03 20:39:05

1
  1. 你說的兩倍strExportFullyQualifiedName是一個文本文件的位置。我以前從未自動執行此過程,但我認爲您只能從文字文件中導出。

  2. 是否strExportFullyQualifiedName包含文件路徑&文件名?例如「C:\ TEST.DOC」?

+0

@PowerUser:代碼運行的上下文是Access,而不是Word,否? – 2010-03-04 18:48:23

+0

糾正我,如果我錯了,但我不認爲它在這裏重要代碼運行在哪裏。郵件合併是MS Word中的一個功能,據我所知,它只能用於Word文件。所以,他的代碼應該引用一個Word文件作爲他的源代碼。 – PowerUser 2010-03-04 20:49:03

+0

Word郵件合併可以使用任意數量的數據源,文本文件,Excel文件,Access MDB等。它不需要Word文件作爲數據*源*。 – 2010-03-05 20:55:32