대개 대답은 '아니요'가 아니라 '예'의 희미한 부분이 있습니다.
스트림에서 PackagePart
을 (를) 관리하는 구체적인 질문에 관해서. 일종의 "압축 해제"유틸리티로 이것을 수행 한 다음 OPC 구조를 알고 Part
에서 원하는 곳으로 이동하여 XSLT 또는 다른 XML 조작 기술로 변경하면됩니다. 그러나이 작업을 수행 할 수는 없습니다 ActiveDocument
에 있습니다. 스트림이 이미 열려 있기 때문에 스트림이 이미 사용 중이기 때문입니다. VBA를 사용하여 복사본을 생성하고 조작하기가 번거롭고 조작이 완료되면 VBA를 닫고 현재 ActiveDocument
을 삭제하고 조작 된 것을 새 ActiveDocument
으로 엽니 다.
반면에 VBA의 현재 ActiveDocument
에 대해 WordprocessingML을 조작하는 방법이 있지만 엄청나게 어려울 것입니다. 열려있는 문서를 가지고 뭔가를 선택한 다음 VBE를 선택하십시오. 다음을 실행하십시오 :
Sub InjectXML()
Dim wd As Document: Set wd = ActiveDocument
Debug.Print wd.Range.WordOpenXML
End Sub
즉시 처리 창에 모든 WordprocessingML이 표시됩니다. 이것은 실제로 "Flat OPC WordprocessingML"입니다. XML 문자열로 모두 유지 관리됩니다. ActiveDocument.Range.InsertXML
을 사용하면 기술적으로 Flat OPC-type of WordprocessingML을 선택한 위치의 문서에 삽입 할 수 있습니다. interop 및 Linq-to-XML을 통해이를 수행하기 위해 C#을 사용하는 누군가의 Here's an example. VBA에서 이렇게하는 것은 엄청나게 어려울 것입니다.
다시 대답은 대부분 "아니오"이지만 약간 "예"입니다.
물론 종속성을 감당할 여유가 없다면 질문에 명확하게 설명해야합니다. – zeFrenchy
VBA에서 해당 네임 스페이스를 사용할 수 있습니까? 아니면 COM을 통해 Word와 상호 작용하는 프로그램 용입니까? 나는 VBA 스크립팅을 여기 Office (실제로 Outlook이 아니라 Word) 내부에서 생각하고있다. – Jez