- ベストアンサー
VBAでエクセルのDOCUMENT行の書き出しについて試したがエラーが発生する
- VBAを使用してエクセルのDOCUMENT行の書き出しを試みましたが、エラーが発生しました。参照設定やコードに問題はありませんか?
- エクセルのVBAを使用してDOCUMENT行の書き出しを行おうとしましたが、コンパイルエラーが発生しました。原因はどこにあるのでしょうか?
- エクセルのVBAでDOCUMENT行の書き出しに取り組んでいますが、エラーメッセージが表示されます。解決策を教えてください。
- みんなの回答 (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" ----
その他の回答 (3)
- maesen
- ベストアンサー率81% (646/790)
>文字列でもやってみたのですが、0kb(空っぽ)のファイルでしか書き出されません。 >xmlDoc.Load Str このメソッドはファイル入力ですので、文字列のXMLをロードするには、 xmlDoc.loadXML(str) です。(かっこはなくてもいいと思います)
お礼
あ、すいません、 xmlDoc.loadXML Str でやってみたんですが、0kbだったので試しに xmlDoc.Load Str でもやってみたんです。結果的にどちらもダメでしたが・・・
- maesen
- ベストアンサー率81% (646/790)
私もあまり詳しくないので申し訳なく、間違っていたら申し訳ありません。 MSXML2.DOMDocumentでは <!DOCTYPE ・・・・は作成出来ないような感じですね。 (取得することは出来るけど) LoadXMLで文字列として直接書いて作るしかなさそうです。
お礼
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)
IXMLDOMDocumentType では? このエラー箇所とは別の部分でも、 なんかソース内に.NETのクラスの記述とが混在しているように思います。 http://msdn.microsoft.com/en-us/library/ms760218(v=VS.85).aspx
お礼
お返事ありがとうございます。 >IXMLDOMDocumentType では? これで変数の定義時のエラーはでなくなりました。 ありがとうございました。 ただ、 Set xmlDoctype = xmlDoc.appendChild(xmlDoc.CreateDocumentType("BookList", "", "Title.dtd", "")) の「.CreateDocumentType」でエラーが出ます。 ---------------------------------------------- コンパイルエラー: メソッドまたはデータメンバが見つかりません。 ---------------------------------------------- msdnを見てもDocumentTypeをCreateするメソッドが見当らず・・・ う~ん、msdnを彷徨ってきます・・・
お礼
あーーーーーー 出来たぁーーーーーー! ありがとうございます、感謝感謝です! 本当に助かりました。 ちょっとまとめておきますね。 動作環境-------------------------- 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」で「変数が定義されていません」とエラーが出たので、とりあえず定義しておきました。 おかしいようでしたらご指摘願います。 いやー、スッキリしました。