質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1201閲覧

VBAでのXML作成

sigret

総合スコア45

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/03/15 07:11

現在Excelに記述してある設定ファイルの表をXMLへ変換するマクロを作っているのですが、調べても既に表が完成していることが前提の説明しか出てきません。(現在の表はまだ追加や削除が出るかわからない状態でその都度修正を行っていたら大変、とのことでこれをマクロでするとの作業です。)
また表は複数あり(シートで分けられている)、それぞれ数や文言が違うのですがこれをマクロですることはできるのでしょうか?

とりあえずボタン押下時にExcelを選択するダイアログ部分だけ作って躓いてます。

Sub XML() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Set TargetWorkbook = Workbooks.Open(OpenFileName) Set xmlDoc = New MSXML2.DOMDocument60 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) End Sub

未熟者ですみません。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

できるかできないかでいえば、できます。
どうやるか?については、答えられません。

いわゆる、仕様がないからです。

完成している表であれば、xmlタグの名前や、値の取得方法が決まっているので、
以下のように、それにもとずいた設定をしています。

VBA

1 '<Tel>要素を追加します。 2 Set node(3) = node(2).appendChild(xmlDoc.createNode(NODE_ELEMENT, "Tel", "")) 3 node(3).Text = "111-1111-1111"

今回のように不定な表からxmlを作るのであれば、不定の表をどうxml化するのか?
の仕様を決めれば、その通りにコーディングすればよいです。

上記の例でいうと"TEL"にあたる部分や、"111-1111-1111"部分の取得方法。
ほかのノードとの親子関係など、どう扱うのかを仕様化する必要があります。

どんな表か、わかりませんが1列目なのか1行目をタグの名前にして、値を取得して・・・を
データがなくなるまで繰り返す。

レベルの回答ぐらいしかできませんし。
不定の表の定義方法についても、こんな表現はできませんよ。
っていう制約をつけたりと当事者でないとわからないことが多いので、これ以上はなんとも・・・

投稿2018/03/15 09:24

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sigret

2018/03/16 00:03

回答ありがとうございます。 具体的にはexcelのB列に親要素、C列に子要素、D列に孫要素・・と論理名があり、G列に物理名、I列に初期値があります。 これをマクロ実行でXMLの形にしたい、とのことです。 論理名の階層構造通りに物理名を入れ、初期値があれば初期値も入れる、といった感じです。 物理名や論理名の列は固定されるそうですがこの中身(孫要素の追加、削除など)は変わる可能性があるから漏れがないようマクロ実行でXMLを作りたい、です。
momon-ga

2018/03/16 01:59

MSXML2の使い方調べながら、そのように実装してくださいとしか言えません。 何に困っているか、わからないですし誰かに実装してもらいたいなら、テラテイルでは回答を期待しないほうが良いです。
guest

0

現在のexcelが吐き出すxlsxファイルやopendocumentファイルはそもそもxmlデータをzipで圧縮したものなので、単にxmlがほしいだけなら解凍すれば終わりです。

特別な様式なxmlがほしいならば、「表」→xmlではなく、xml→xmlの変換を模索したほうがいいのではないでしょうか。

投稿2018/03/15 07:24

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sigret

2018/03/15 07:36

確認したところ「マクロを作る!」とのことで・・。 今ある表をマクロでXMLファイルを作成する、らしいです。 せっかくお答えいただいたのに申し訳ありません・・。
ExcelVBAer

2018/03/15 07:48

ん?だれがマクロを作るんですか?何故あなたが質問してるんでしょうか?
sigret

2018/03/15 07:53

ExcelVBAerさん 作成するのは自分ですが・・? 「KojiDoiさんの仰っているその方法ではだめか?」と確認したところ「マクロを作ります!」で動かなかったのでその案を出していただいたのに申し訳ないです、と。
ExcelVBAer

2018/03/15 08:06

学生さんの宿題のような応答ですね。がんばってください。
sigret

2018/03/15 08:08

学生じゃないんだよなぁ・・・。
ExcelVBAer

2018/03/15 08:41

マクロを作るにしても、難易度が高いから作るのに時間もコストもかかるけど、大丈夫なんですか? なんで「作成する、らしい」と「らしい」が付くんでしょうか? マクロ化する本当の目的はなんでしょうか? なんでシステム化の主導権が開発者であるあなたではないのでしょうか?
sigret

2018/03/15 23:55

ExcelVBAerさん マクロ化する目的→まだ設定ファイルが完成しておらずその都度変更してたら漏れが出たり、そもそもいちいち変更するのが面倒、だからです。 主導権→なんというか・・上の方から「そうして(マクロでやって)」と言われ、それでやるしかないから・・ですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問