거기에 이전 질문에 대한 stackoverflow :
"Excel에서 매크로를 시작할 수 있습니까 (시트에 단추를 클릭하여) 데이터를 Excel 시트를 가지고 있고 내보낼. 새로운 단어 박사에게. " dendarii 772에 의해Excel 편지 병합 런타임 오류 4198
제한된 컴퓨터 기술을 가진 자원 봉사자의 생활을 단순화하고 싶었 기 때문에 우리는 또한이 필요했다.
적절한 경로로 수정 된 dendarii의 코드는 .OpenDataSource 문에서 런타임 오류 4198과 함께 종료됩니다.
신디 마이스터 (Cindy Meister)가 개발자 양식 용 문서 작성>> Word 2010 VBA는 동시성 문제로 인해 4198 오류가 발생할 수 있다고 제안했습니다. 나는 성공하지 못하게했다.
Mr Excel에서 작성한 Andrew Poulson은 Snecz가 VBA 편지 병합 .OpenDataSource 문과 Word 매크로 기록을 비교하도록 권장합니다. 공헌자는 무엇을 생각합니까? 내 .OpenDataSource 라인이 표준으로 보인다. 내 Excel 데이터 원본 파일에는 두 줄의 데이터 요소가 오는 머리글 행이 있습니다.
우리는 내가 4198을 해결하는 방법에 대한 어떤 제안에 매우 감사하게 될 것이며, 사람이 일반적으로 진단 절차를 알고있는 경우Office 2010을 가지고있다. 우리는 자선 단체 인 을 위해 일하는 두 명입니다. 도움을 환영합니다!
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
'Sheet1'이라는 워크 시트가 있습니까? – JimmyPena
예! 모두 고쳐 졌어. –