stackoverflowに関する以前の質問がありました:
「Excelマクロから(シート上のボタンをクリックして)MAIL MERGEを開始することは可能ですか)データを含むExcelシートがあり、それを新しい単語ドキュメントにエクスポートしたいです。」これは、2009年9月29日12:39にdendarii772によって回答されました。
コンピューターのスキルが限られているボランティアの生活を簡素化したかったので、私たちにもこのニーズがありました。
残念ながら、適切なパスで変更されたdendariiのコードは、.OpenDataSourceステートメントで実行時エラー4198で終了します。
CindyMeisterがMicrosoftOfficeforDeveloper'sFormに書き込み>..>Word 2010 VBAは、4198エラーが同期性の問題に起因する可能性があることを示唆しました。私はそれを成功させませんでした。
Andrew PoulsonがExcelに書き込みを行うと、寄稿者のSneczがVBAメールマージの.OpenDataSourceステートメントをWordマクロの記録と比較するように促されます。寄稿者はどう思いますか?私の.OpenDataSource行は標準のようです。私のExcelデータソースファイルには、ヘッダーの行とそれに続く2行のデータ要素があります。
Office2010があります。
4198を修正する方法や、一般的な診断手順を知っている人がいれば、提案をいただければ幸いです。私たちは慈善団体で働いている2人です。どんな助けでも歓迎します!
Sub RunMerge()
Dim wd As Object
Dim wdocSource As Object
Dim strWorkbookName As String
On Error Resume Next
Set wd = GetObject(, "Word.Application")
If wd Is Nothing Then
Set wd = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdocSource = wd.Documents.Open("C:\Users\george\Desktop\VBA Project\Mergeletter.docx")
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
wdocSource.MailMerge.MainDocumentType = wdFormLetters
wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
SQLStatement:="SELECT * FROM `Sheet1$`"
With wdocSource.MailMerge
.Destination=wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
wd.Visible = True
wdocSource.Close SaveChanges:=False
Set wdocSource = Nothing
Set wd = Nothing
End Sub