우리는 Access 내에서 편지 병합 프로세스를 자동화하려고 시도하고 있습니다. 버튼을 클릭하면 현재 데이터베이스를 지정하는 VBA가 실행됩니다) 데이터 소스로 아래 코드 당 SQL을 실행합니다Access/Word 2010 VBA 편지 병합은 ACCDB 원본 대신 [Foldername] .mdb를 엽니 다.
'Set up Word
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
'Make visible, open specified doc to merge
With objWord
.Visible = True
.Documents.Open strDocName
End With
'Set the data source path
Dim docPath As String
docPath = CurrentProject.Path & "\" & CurrentProject.Name
'Open the merge data source - simplified
objWord.activedocument.mailmerge.opendatasource _
Name:=docPath, _
SQLStatement:=strSQL
strDocName 및 STRSQL이 전달 유효한 기능적인 내용을 포함하고 있습니다.
단어를 여는 데 성공하여 단어를 표시하고 병합 할 서식 파일을 엽니 다. 그러나이 시점에서 데이터 소스를 확인하라는 메시지가 나타나고 가능한 데이터 소스 목록이 표시됩니다. '모두 표시'확인란을 클릭하면 ODBC (.mdb, .accdb)를 통해 MS Access 데이터베이스로 스크롤하고 목록에서 선택할 수 있습니다.
그 다음 말을, 'ODBC Access 드라이버 로그인 실패'라는 제목의 상자 선물 '파일 찾을 수 없습니다 "[데이터베이스 폴더 경로] .MDB/[포함 된 폴더의 이름]"'그래서
, 내 데이터베이스가 C : \ Temp에있는 경우 오류 경로는 'C : \ Temp.mdb'를 읽습니다. 액세스 데이터베이스를 다른 폴더로 이동하면 오류 경로가 업데이트되어 포함 폴더에 따라 적절하게 명명 된 mdb 파일을 찾습니다.
관련성이 있는지는 잘 모르겠지만 템플릿에서 새 문서를 생성하는 대신 템플릿 자체를 편집하는 모드로 템플릿을 여는 것처럼 보입니다.
여기에 뭔가가 누락되었거나 누구에게 아이디어가 있습니까?
건배 Remou의 도움으로
아래, 우리는 액세스에 직접 연결 포기하고 거기에서 병합, 임시 텍스트 파일로 출력 Remou의 제안 링크의 코드를 사용했다. 우리는() CurrentBackendPath를 제거하는 코드를 수정하고 다음과 같이이 기능에 대한 유일한 참조를 변경 : 우리가 사용
Private Function GetStartDirectory() As String
'GetStartDirectory = CurrentBackendPath() & "mm\"
GetStartDirectory = CurrentProject.Path & "\mm\"
End Function
유일한 다른 수정은 우리의 목적을 구체적으로 코드를 변경했다. 답장을 보내 주셔서 다시 한 번 감사드립니다. 나는 그렇게하기에 충분한 평판이 있다면 그들의 반응에 대해 레 모우를 상대로 줄을! 것이다!
MSDN (http://msdn.microsoft.com/en-us/library/office/ff841005.aspx)에 따르면, "Open Database Connectivity (ODBC), 연결 문자열 지정 * "연결 문자열 대신 파일 경로를 제공하는 것 같습니다. – HansUp
Re : templates - Open 메서드를 사용하면 기존 문서 (이 경우 템플릿)가 열립니다. 새 문서를 만들려면 Documents.Add를 사용하고 첫 번째 인수로 템플릿의 경로를 전달합니다. Documents.Add가 새로 생성 된 문서에 대한 참조를 반환한다는 것을 명심하십시오. –
@HansUp 당신은 옳은 것처럼 보입니다 - 나는 이것을 시도하고 해결하기 위해 아래 Remou의 답변을 따라갈 것입니다. 당신의 응답을 주셔서 감사합니다! – WaideWalker