質問編集履歴

3

修正依頼にもとづき、タグ値と出力結果のマッピング表を添付します。

2018/09/10 09:42

投稿

saito.kaz
saito.kaz

スコア76

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- XMLからExcelのマクロを利用して、Excelに特定の値を転記するロジックを組んでいるのですが、
1
+ ![イメージ説明](d56662a9ca415476e426c0924f9b69a2.png)XMLからExcelのマクロを利用して、Excelに特定の値を転記するロジックを組んでいるのですが、
2
2
 
3
3
  下記の3パターンに対応するため、マクロを汎用化する必要があります。
4
4
 

2

修正依頼にもとづき、コードを記載しました。ただ今回の要望と関係ないです。自分のレベルを知ってもらうためでもあります。

2018/09/10 09:42

投稿

saito.kaz
saito.kaz

スコア76

test CHANGED
File without changes
test CHANGED
@@ -111,3 +111,107 @@
111
111
  |名前1|String|true|false|説明1| |
112
112
 
113
113
  |名前2|Logical|false|false|説明2|true |
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ *帰宅したため作成中のプログラムはないのですが、下記のようなイメージです。
122
+
123
+  汎用化ができておらず、また階層が深くなるとどのように書けば良いのかわからなくなります。
124
+
125
+  (1週間前に参考書を利用して見よう見真似でコーディングしているので、階層が深くなったり少しでも
126
+
127
+   やりたいことが変わると書けなくなります。申し訳ございません。)
128
+
129
+ ```ここに言語を入力
130
+
131
+ Sub XMLスキーマ対応付け()
132
+
133
+ Dim myXMLMap As XmlMap
134
+
135
+ Set myXMLMap = ActiveWorkbook.XmlMaps.Add _
136
+
137
+ (Schema:="C:\スキーマ\order.xsd")
138
+
139
+ Range("B3").XPath.SetValue Map:=myXMLMap, _
140
+
141
+ XPath:="/order/date", Repeating:=False
142
+
143
+ Range("B4").XPath.SetValue Map:=myXMLMap, _
144
+
145
+ XPath:="/order/customer", Repeating:=False
146
+
147
+ With ActiveSheet.ListObjects("注文データ")
148
+
149
+ .ListColumns(1).XPath.SetValue Map:=myXMLMap, _
150
+
151
+ XPath:="/order/goods/no", Repeating:=True
152
+
153
+ .ListColumns(2).XPath.SetValue Map:=myXMLMap, _
154
+
155
+ XPath:="/order/goods/name", Repeating:=True
156
+
157
+ .ListColumns(3).XPath.SetValue Map:=myXMLMap, _
158
+
159
+ XPath:="/order/goods/amount", Repeating:=True
160
+
161
+ End With
162
+
163
+ myXMLMap.Name = "orderDataXmlMap"
164
+
165
+ End Sub
166
+
167
+
168
+
169
+
170
+
171
+ ```
172
+
173
+
174
+
175
+ ```ここに言語を入力
176
+
177
+ <?xml version="1.0" encoding="UTF-8" ?>
178
+
179
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
180
+
181
+ <xsd:element name="order">
182
+
183
+ <xsd:complexType>
184
+
185
+ <xsd:sequence>
186
+
187
+ <xsd:element name="date" type="xsd:string" />
188
+
189
+ <xsd:element name="customer" type="xsd:string" />
190
+
191
+ <xsd:element name="goods" minOccurs="1" maxOccurs="unbounded">
192
+
193
+ <xsd:complexType>
194
+
195
+ <xsd:sequence>
196
+
197
+ <xsd:element name="no" type="xsd:string" />
198
+
199
+ <xsd:element name="name" type="xsd:string" />
200
+
201
+ <xsd:element name="amount" type="xsd:int" />
202
+
203
+ </xsd:sequence>
204
+
205
+ </xsd:complexType>
206
+
207
+ </xsd:element>
208
+
209
+ </xsd:sequence>
210
+
211
+ </xsd:complexType>
212
+
213
+ </xsd:element>
214
+
215
+ </xsd:schema>
216
+
217
+ ```

1

ファイルのアップロードができなかったので、実行結果とサンプルファイルを記載します。

2018/09/10 09:26

投稿

saito.kaz
saito.kaz

スコア76

test CHANGED
File without changes
test CHANGED
@@ -64,8 +64,50 @@
64
64
 
65
65
 
66
66
 
67
+ ○サンプルファイル 
67
68
 
68
69
 
69
- ○サンプルファイル ← これを読み込んで、下記の通り、実行結果に転記したい。
70
70
 
71
+ <?xml version="1.0" encoding="Shift_JIS"?>
72
+
73
+ <preferences>
74
+
75
+ <category name="カテゴリ名">
76
+
77
+ <category_description></category_description>
78
+
79
+ <preference name="名前1" type="String" array="true" disabled="false">
80
+
81
+ <preference_description>説明1</preference_description>
82
+
83
+ </preference>
84
+
85
+ <preference name="名前2" type="Logical" array="false" disabled="false">
86
+
87
+ <preference_description>説明2</preference_description>
88
+
89
+ <context name="Teamcenter">
90
+
91
+ <value>true</value>
92
+
93
+ </context>
94
+
95
+ </preference>
96
+
97
+
98
+
71
- ○実行結果
99
+ ○実行結果 
100
+
101
+ |名前|タイプ|配列|無効化|説明|値|
102
+
103
+ |name値|type値|array値|disable値|description値|value値|
104
+
105
+
106
+
107
+ ○実行結果Excel (例)
108
+
109
+ |名前|タイプ|配列|無効化|説明|値|
110
+
111
+ |名前1|String|true|false|説明1| |
112
+
113
+ |名前2|Logical|false|false|説明2|true |