@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Excelからxmlファイルの出力について

1
投稿者投稿内容
なぎさ
会議室デビュー日: 2007/11/15
投稿数: 10
投稿日時: 2008-05-28 22:40
Excelの表からxmlファイルの出力についての質問です。
単純にExcelの表からセルの値をとってきてファイル出力は出来たのですが、UTF-8の文字コードを指定してxmlファイルを出力でどうしてもそこでつまずいてしまいました。

・CreateObject
・Charset
あたりを使うのかなと思っているのですが、中々上手くいきません。
文字コード指定をするにはどのようにしたら良いのでしょうか?
ソースコードは以下の通りです。

Sub WRITE_TextFile()
Const cnsTITLE = "xmlファイル出力処理"
Const cnsFILTER = "xmlファイル (*.xml),*.xml"
Dim xlAPP As Application ' Applicationオブジェクト
Dim intFF As Integer ' FreeFile値
Dim strFILENAME As String ' OPENするファイル名(フルパス)
Dim strREC As String ' 書き出すレコード内容
Dim GYO As Long ' 収容するセルの行
Dim GYOMAX As Long ' データが収容された最終行
Dim lngREC As Long ' レコード件数カウンタ

' Applicationオブジェクト取得
Set xlAPP = Application
' 「名前を付けて保存」のフォームでファイル名の指定を受ける
xlAPP.StatusBar = "出力するファイル名を指定して下さい。"
strFILENAME = xlAPP.GetSaveAsFilename(InitialFilename:="ErrorMessage.xml", _
FileFilter:=cnsFILTER, Title:=cnsTITLE)
' キャンセルされた場合は以降の処理は行なわない
If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub

' 収容最終行の判定(Excel認知の最終行から上に向かってデータがある行を探す)
GYOMAX = Cells.SpecialCells(xlCellTypeLastCell).Row
Do While Cells(GYOMAX, 1).Value = ""
GYOMAX = GYOMAX - 1
Loop
If GYOMAX < 2 Then
xlAPP.StatusBar = False
MsgBox "テキストをA列2行目から入力してから起動して下さい。", , cnsTITLE
Exit Sub
End If
' FreeFile値の取得(以降この値で入出力する)
intFF = FreeFile
' 指定ファイルをOPEN(出力モード)
Open strFILENAME For Output As #intFF
' 2行目から開始
GYO = 2
Print #intFF, "<Message>"
' 最終行まで繰り返す
Do Until GYO > GYOMAX
' A列内容をレコードにセット(先頭は2行目)
Print #intFF, "<add key = " & """" & Cells(GYO, 2).Value & "_" & Cells(GYO, 3).Value & "_" & Cells(GYO, 4).Value & """" & " value=" & """" & Cells(GYO, 6).Value & """" & " />"
' レコード件数カウンタの加算
lngREC = lngREC + 1
xlAPP.StatusBar = "出力中です....(" & lngREC & "レコード目)"
' 行を加算
GYO = GYO + 1
Loop
Print #intFF, "</Message>"
' 指定ファイルをCLOSE
Close #intFF
xlAPP.StatusBar = False
' 終了の表示
MsgBox "ファイル出力が完了しました。" & vbCr & _
"レコード件数=" & lngREC & "件", vbInformation, cnsTITLE
End Sub

ExcelはOffice2000です。
よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)