• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DOCUMENT行の書き出しについて-VBAで)

VBAでエクセルのDOCUMENT行の書き出しについて試したがエラーが発生する

このQ&Aのポイント
  • VBAを使用してエクセルのDOCUMENT行の書き出しを試みましたが、エラーが発生しました。参照設定やコードに問題はありませんか?
  • エクセルのVBAを使用してDOCUMENT行の書き出しを行おうとしましたが、コンパイルエラーが発生しました。原因はどこにあるのでしょうか?
  • エクセルのVBAでDOCUMENT行の書き出しに取り組んでいますが、エラーメッセージが表示されます。解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • maesen
  • ベストアンサー率81% (646/790)
回答No.4

適当な情報を提示しまして申し訳ありません。 単純にloadXMLしただけでは、パーサーを通るときにエラーになってしまうようです。 また、DTDのファイルも探しに行ってしまうようです。 さらに、DOCTYPEのみのXMLではだめで、何らかの本文も必要なようです。(<abc>1</abc>の部分) 簡単に検証しましたが以下のコードではなんとなくうまくいっているようです。 doctypeプロパティなどでDOCTYPEが取れるので良いように思うのですが。。。 ちょっと無理やりのようにも思いますので要件に合うかわかりませんが、参考になればと思います。 研究してみて下さい。 ---- Dim Str As String Str = "<!DOCTYPE BookList SYSTEM ""Title.dtd""><abc>1</abc>" xmlDoc.async = false xmlDoc.resolveExternals = false xmlDoc.validateOnParse = false If xmlDoc.loadXML(Str) <> true Then WScript.Echo "エラー" xmlDoc.Save "C:\_Books\Title.xml" ----

viaeden753
質問者

お礼

あーーーーーー 出来たぁーーーーーー! ありがとうございます、感謝感謝です! 本当に助かりました。 ちょっとまとめておきますね。 動作環境-------------------------- Windows XP SP3 Excel2003 SP3 VBE Microsoft Visual Basic 6.5 ---------------------------------- 参照設定-------------------------- Microsoft XML,v6.0 ---------------------------------- ------------------------------------------ Dim xmlDoc As MSXML2.DOMDocument Set xmlDoc = New MSXML2.DOMDocument Dim WScript Dim Str As String Str = "<?xml version=""1.0"" encoding=""UTF-8"" ?><!DOCTYPE BookList SYSTEM ""Title.dtd""><abc>1</abc>" xmlDoc.async = False xmlDoc.resolveExternals = False xmlDoc.validateOnParse = False If xmlDoc.loadXML(Str) <> True Then WScript.Echo "エラー" xmlDoc.Save "C:\_Books\Title.xml" ------------------------------------------ 出力---------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE BookList SYSTEM "Title.dtd"> <abc>1</abc> -------------------------------------- 「WScript」で「変数が定義されていません」とエラーが出たので、とりあえず定義しておきました。 おかしいようでしたらご指摘願います。 いやー、スッキリしました。

その他の回答 (3)

  • maesen
  • ベストアンサー率81% (646/790)
回答No.3

>文字列でもやってみたのですが、0kb(空っぽ)のファイルでしか書き出されません。 >xmlDoc.Load Str このメソッドはファイル入力ですので、文字列のXMLをロードするには、 xmlDoc.loadXML(str) です。(かっこはなくてもいいと思います)

viaeden753
質問者

お礼

あ、すいません、 xmlDoc.loadXML Str でやってみたんですが、0kbだったので試しに xmlDoc.Load Str でもやってみたんです。結果的にどちらもダメでしたが・・・

  • maesen
  • ベストアンサー率81% (646/790)
回答No.2

私もあまり詳しくないので申し訳なく、間違っていたら申し訳ありません。 MSXML2.DOMDocumentでは <!DOCTYPE ・・・・は作成出来ないような感じですね。 (取得することは出来るけど) LoadXMLで文字列として直接書いて作るしかなさそうです。

viaeden753
質問者

お礼

maesenさん、気にかけていただきありがとうございます。 文字列でもやってみたのですが、0kb(空っぽ)のファイルでしか書き出されません。 -------------------------------------------------------- Dim Str As String Str = "<!DOCTYPE BookList SYSTEM ""Title.dtd"">" xmlDoc.Load Str xmlDoc.Save "C:\_Books\Title.xml" -------------------------------------------------------- 何かでエラーが発生しているようですが・・・

  • maesen
  • ベストアンサー率81% (646/790)
回答No.1

IXMLDOMDocumentType では? このエラー箇所とは別の部分でも、 なんかソース内に.NETのクラスの記述とが混在しているように思います。 http://msdn.microsoft.com/en-us/library/ms760218(v=VS.85).aspx

viaeden753
質問者

お礼

お返事ありがとうございます。 >IXMLDOMDocumentType では? これで変数の定義時のエラーはでなくなりました。 ありがとうございました。 ただ、 Set xmlDoctype = xmlDoc.appendChild(xmlDoc.CreateDocumentType("BookList", "", "Title.dtd", "")) の「.CreateDocumentType」でエラーが出ます。 ---------------------------------------------- コンパイルエラー: メソッドまたはデータメンバが見つかりません。 ---------------------------------------------- msdnを見てもDocumentTypeをCreateするメソッドが見当らず・・・ う~ん、msdnを彷徨ってきます・・・

関連するQ&A