2014-09-23 4 views
0

여기에 내 요구 사항이 있습니다. 1) xml과 해당 xsd 문서가 있습니다. 2) 여러 요소와 계층이있는 복합 XML입니다. 그러나 중요 한 요소/필드가 있습니다. 3) 사용자가 여러 행에 걸쳐 데이터를 입력 할 수있는이 필드로 Excel을 만들려고합니다. 4) 사용자가 create xml을 클릭하면 각 행마다 별도의 xml을 만들어야합니다. 5) 모든 요소를 ​​(사용자가 원래의 XML로 + 더 많은 입력)매크로를 사용하여 Excel에서 데이터를 사용하여 xml을 만듭니다.

이 하나는 XML을 생성 할 수 있습니다 어디 MSXML2.DOMDocument60에 대한 몇 가지 참조를 발견 메가 샘플

<A> 
    <A1/> 
    <A2/> 
</A> 
<B> 
    <B1>*User entered value*</B1> 
    <B2>*User entered value*</B2> 
</B> 
<C> 
    <C1/> 
    <C2/> 
</C> 

그냥 포함되어 있어야 생성 된 XML 이 API를 사용하고 또한 Excel 매크로를 통해 스키마에 대해 유효성을 검사합니다. 하지만 제 경우에는 1000 개의 태그가 있습니다. 다음은 내가 생각하는 몇 가지 옵션입니다.

  1. DOMDocument60 API를 사용하고 매크로를 사용하여 xml 줄을 한 줄씩 구성하십시오. 태그가 1000 개 이상 있기 때문에이 방법을 사용하면 1000 줄의 코드가 생겨 유지 관리가 번거로운 작업이됩니다!
  2. 샘플 xml이 있으므로 기존 값을 비우고 사용자 입력 값 (셀 데이터를 가져옴)을 사용하여 매크로를 통해 xml을 업데이트 할 수 있습니다. 이것은 1000 줄의 코드를 절약 할 수 있기 때문에 더 효과적이지만 이것이 가능합니까? 업데이트해야하는 요소가 XML에 분산되어 있기 때문에 요소를 검색하고 해당 요소 만 업데이트하고 XML의 다른 데이터/태그에는 영향을주지 않을 수 있습니까?
  3. xsd로 아무 것도 할 수 있습니까? 내 요구 사항으로 내 마음에 깜박 없음
  4. 다른 옵션은?

감사합니다. 감사 ! 당신이 기본이있는 경우

답변

0

, 당신은 그런 식으로 뭔가를 사용할 수 있습니다

Open "e:\0\xml.xml" For Input As #1 
Open "e:\0\xml1.xml" For Output As #2 

i = 1 
While Not EOF(1) 
    Line Input #1, aa 

    If InStr(1, aa, "<B1>", vbTextCompare) > 0 Then 
     aa = Left(aa, 3 + InStr(1, aa, "<B1>", vbTextCompare)) & Cells(i, 1).Value & Right(aa, Len(aa) - InStr(1, aa, "</B1>", vbTextCompare) + 1) 
     i = i + 1 
    End If 

    Print #2, aa 
Wend 

Close #1 
Close #2 

코드가 열 A의 값과 태그 B1 내부의 텍스트를 변경, 원본 파일을 복사
이있는 경우 더 많은 "조각", 당신은 다른 파일을 병합 할 수 있습니다 ...

관련 문제