xslでRedmineのデータをCSV化する際のエラー
解決したいこと
【参考】https://qiita.com/Amn378/questions/4f6fa6eaa5a53cb84269?utm_campaign=email&utm_content=link&utm_medium=email&utm_source=public_answer#answer-307d8bab0546f15eb7f3
こちらの続きになります。(RedmineのデータをXMLで取得、XSLでTAB区切りのcsvにしています)
おおむね読み込みはうまくいっていますが、VBAでQueryTableにてCSVを読み込む際、一部のXMLでエラーとなります。
原因は一部の文字コードにあることがわかりました。
今までわかっているエラーの出る文字は「~」(U+007E)と「أُ」(\u0623\u064F アラビア語だそうです )で、その文字を取り除いたxmlはxslで無事CSVに変換できました。
Redmineの性質上、どのような文字コードが想定されるかあらかじめわかりません。(日本語だけでもないようです)
このような場合の最適解を探しています。
例えば禁則文字的なものを指定し、そのコードが含まれているか事前に検査する?などということになるのでしょうか?(xml自体数も多いのでなるべくやりたくありませんが…)また、左記を行う場合、想定する禁則文字は?というところでまた壁がはだかります。
このようなご経験のある方がいたら参考までに教えてください。
発生している問題・エラー
プロシージャの呼び出し、または引数が不正です
該当するソースコード
Dim oXml,oXsl,oFso,f
Set oXml = CreateObject("MSXML2.DOMDocument")
oXml.async = False
oXml.Load("ファイル.xml")
Set oXsl = CreateObject("MSXML2.DOMDocument")
oXsl.async = False
oXsl.Load("Format_tab.xsl")
Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile("result.csv" , 8 , True)
f.WriteLine oXml.transformNode(oXsl) ’ *** ここでエラー
Set oXml = nothing
Set oXsl = nothing
Set oFso = nothing
Set f = nothing
上記の***でエラーとなります。
自分で試したこと
どの文字がエラーを引き起こしているのか、1つずつ項目を絞り、Subjectに入っている文字であること、その文字がどの文字かということまでは断定できました。