2013-06-02 2 views
0

동적 콘텐츠가 포함 된 양식을 생성하기위한 솔루션으로 XML w/MS Word를 탐색하고 있지만 쉬운 작업 인 것처럼 보이지 않는 작업을 수행하고 있습니다.XML/VBA - Word 문서 콘텐츠 컨트롤 값 업데이트

http://msdn.microsoft.com/en-us/library/office/gg605188%28v=office.14%29.aspx

MSDN

에서 예제를 사용하여 내가 내 XML 문서를 열고 <CompanyName>Gadget Co.</CompanyName><CompanyName>Adventure Works</CompanyName>을 변경 말한다. 내 Word 문서에 반영되도록 .xml 문서에서 변경된 값을 얻으려면 어떻게해야합니까?

나는 시도했다 :

1) 저장, 닫기 및 다시 열기 워드 문서를.

2) ActiveDocument.CustomXMLParts(4).Load 명령을 다시 실행하십시오. 닫은 후 열어도 이미로드 된 오류가 발생합니다.

3) ActiveDocument.ContentControls(#).XMLMapping.SetMapping 절차로 컨트롤을 다시 매핑합니다. (오류는 발생하지 않지만 내용을 업데이트 할 필요는 없습니다.)

XML 및 Office Suite 설명서의 대부분은 .Net 개발에 적합합니다. 나는이 솔루션을 위해 닷넷을 사용하고 싶지는 않지만, VBA의 지원이 훨씬 제한적으로 보인다.

궁극적으로 최종 출력은 개별적으로 구문 분석되고 pdf로 저장 될 여러 중첩 된 문서가있는 편지 병합 유형 문서가됩니다. 가변 길이 테이블과 동적으로 생성 된 체크 박스 (해당 텍스트 콘텐트 컨트롤 포함)를 사용하여 내용이 동적으로 표시됩니다. 이 시점에서, 나는 Word와 XML이 갈 길인지 확실하지 않고, VBA 기반의 MS Publisher 솔루션을 고려하고 있습니다.

이것에 대한 조언은 크게 감사드립니다. 새로운 CustomXmlPart를 사용하여,

Dim s as String 
s = ActiveDocument.ContentControls(#).XMLMapping.XPath 
ActiveDocument.ContentControls(#).XMLMapping.Delete 
ActiveDocument.ContentControls(#).XMLMapping.SetMapping s 

답변

1

매핑을 삭제 한 후 다시 작성하십시오.

Dim xmlPart As CustomXMLPart 
Dim cc As ContentControl 

Set xmlPart = ActiveDocument.CustomXMLParts.Add 
xmlPart.Load (c:/temp/test.xml) 

For Each cc In ActiveDocument.ContentControls 
    cc.XMLMapping.SetMapping cc.XMLMapping.XPath, cc.XMLMapping.PrefixMappings, xmlPart 
Next cc 
0

당신은 모든 컨트롤을 반복 할 수 및 매핑을 다시 실행 :