その前に、unicodeとUTF-8/16/32の違いを理解しよう。
(1).文字集合 ? 表現したい文字の範囲(”あ”、”い”・・・といった文字の集合体)
(2).符号化方式 ? 文字集合を構成する個々の文字の表現方法(数値の振り方)
"あ"はUTF-8では、"30102"で、UTF-16では,"3042"だ。
ここでは、Excel VBAでファイルを作り、UTF-8でセーブする方法を示す。
Visual Basic Editor のメニューから[ツール]→[参照設定]を選び,[参照可能なライブラリファイル]の中から "Microsoft ActiveX Data Objects x.x Library" にチェックを入れます。
Sub saveTest34() Dim t As String Dim t2 As String Dim stm As ADODB.Stream Set stm = New ADODB.Stream stm.Charset = "UTF-8" stm.LineSeparator = adLF stm.Open t = "あいうえお" & vbCrLf & "かきくけこ" & vbCrLf & "たちつてと" t2 = "さしすせそ" & vbCrLf & "かきくけこ" & vbCrLf & "たちつてと" stm.WriteText t, adWriteLine stm.WriteText t2, adWriteLine stm.SaveToFile "C:\text.txt", adSaveCreateOverWrite stm.Close End Sub上記はVBAでは、ファイル名C:\text.txtとして、中身は、
あいうえお かきくけこ たちつてと さしすせそ かきくけこ たちつてととしてUTF-8で出力されます。
Sub notepp()
Dim j As Long
Dim k As Long
Dim kihu As String
Dim kihu0 As String
Dim kihu1 As String
Dim kihu2 As String
Dim name1 As String
Dim name2 As String
Dim kihu1add As String
Dim kihu2add As String
Dim name1add As String
Dim name2add As String
Dim filenameda As String
Dim dada As Long
Dim datFile As String
Dim wwws As Worksheet
Dim dada2 As String
Dim dada3 As String
Dim t As String
Dim t2 As String
Dim mess As String
Dim stm As ADODB.Stream
Set stm = New ADODB.Stream
stm.Charset = "UTF-8"
stm.LineSeparator = adLF
stm.Open
Call kihutext
name1 = ""
name2 = ""
kihu0 = ""
kihu1 = ""
kihu2 = ""
With Worksheets("Sheet1")
dada = .Cells(44, 20).Value
.Cells(44, 20).Value = dada + 1
dada2 = str(dada)
dada2 = Right(dada2, 3)
dada3 = "\ll3" & dada2 & ".php"
name1 = .Cells(35, 20)
name2 = .Cells(36, 20)
kihu0 = .Cells(33, 20)
k = Len(kihu0)
If k < 901 Then
kihu1 = kihu0
kihu2 = ""
ElseIf k >= 901 Then
kihu1 = Left(kihu0, 900)
kihu2 = Mid(kihu0, 901, 1000)
End If
End With
Set wwws = ThisWorkbook.Worksheets("php")
t = ""
t2 = ""
datFile = "c:\workspace\lolipop\igo22" & dada3
' Open datFile For Output As #1
Dim i As Long
i = 1
Do While wwws.Cells(i, 1).Value <> ""
t = wwws.Cells(i, 1).Value
stm.WriteText t, adWriteLine
' Print #1, wwws.Cells(i, 1).Value
i = i + 1
If i = 88 Then
t = "" & name1 & "
"
stm.WriteText t, adWriteLine
t = name2 & "
"
stm.WriteText t, adWriteLine
i = i + 2
End If
If i = 117 Then
t = "var kihutext1 = " & """" & kihu1 & """" & ";"
stm.WriteText t, adWriteLine
t = "var kihutext2 = " & """" & kihu2 & """" & ";"
stm.WriteText t, adWriteLine
i = i + 2
End If
Loop
' Close #1
stm.SaveToFile "c:\workspace\lolipop\igo22" & dada3
stm.Close
mess = dada3 & "に書き出しました"
MsgBox mess
End Sub
