人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

excelVBAで、テキストファイルを生成するプログラムを作りました。(正確にはics形式)

UTF-8形式にしないといけないのですが、方法が分かりません。
ご存知の方お教え下さい。

win2000pro,excel2003

●質問者: にらたま
●カテゴリ:インターネット ウェブ制作
✍キーワード:UTF-8 テキスト ファイル プログラム 作りました
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● khoshi3
●35ポイント

いちばんシンプルなのは、テキストを漢字コンバータを使ってutf8に変換する方法です。(下記のはコマンドラインで使います):

http://www.vector.co.jp/soft/win95/util/se295331.html

VBA上でutf8でファイル出力するクラスモジュールもあるようです。:

http://www.vector.co.jp/soft/winnt/prog/se320375.html

本ソフトはUTF-8符号化テキストファイル作成のためのVBAクラスモジュールです。


2 ● ardarim
●35ポイント

Excel VBAでUTF-8を吐き出す簡易サブルーチンを作ってみました。

UTF8_openでオープン、UTF8_writeで書き込み、UTF8_closeでクローズです。

Option Base 0
Option Explicit

Sub test()

 Dim fn As Integer
 
 fn = UTF8_open("c:\temp\utf8.txt")
 
 Call UTF8_write(fn, "UTF-8 test" & vbCrLf)
 Call UTF8_write(fn, "UTF?8テスト" & vbCrLf)
 
 Call UTF8_close(fn)
 
End Sub

Function UTF8_open(filename As String) As Integer

 Dim fn As Integer
 Dim bom(2) As Byte
 
 If Dir(filename) <> "" Then
 Kill filename ' Delete if exists
 End If
 
 fn = FreeFile()
 Open filename For Binary Access Write As #fn

 bom(0) = &HEF
 bom(1) = &HBB
 bom(2) = &HBF

 Put #fn, , bom ' Write UTF-8 BOM

 UTF8_open = fn

End Function

Sub UTF8_write(ByVal fn As Integer, ByVal data As String)
 
 Dim objStm As Object
 Dim ba() As Byte
 
 Set objStm = CreateObject("ADODB.Stream")
 
 objStm.Open
 objStm.Type = 2 'adTypeText
 objStm.Charset = "utf-8"
 objStm.WriteText data
 
 objStm.Position = 0
 objStm.Type = 1 'adTypeBinary
 objStm.Position = 3 ' Skip BOM
 
 ba = objStm.read()
 Put #fn, , ba
 
 objStm.Close
 Set objStm = Nothing

End Sub

Sub UTF8_close(ByVal fn As Integer)

 Close #fn
 
End Sub

URLはダミー

http://q.hatena.ne.jp/1203352905

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ