こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA UTF-8形式で保存したい

http://officetanaka.net/excel/vba/file/file11.htm
UTF-8形式で保存する方法を参考サイトを見つけました。

Sub Sample1()
Dim Target As String
Target = "D:\Work\Sample.txt"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.WriteText "田中", 1
.SaveToFile Target, 2
.Close
End With
End Sub

Target = "D:\Work\Sample.txt" といった書き込みのプログラムがあります。下のプログラムとタブってしまいます。
htmlFile = ActiveWorkbook.Path & "\Sample.html"

保存指定が2つあり、どちらかに記述してもパスが違いますとエラーメッセージがでます。

正しいUTF-8形式で保存する方法を教えて下さい。

Sub convertHTML()

 Dim ws As Worksheet
 Dim htmlFile As String
 Dim i As Long
 Dim LineData As String
 
 Set ws = ThisWorkbook.Worksheets(1)
 htmlFile = ActiveWorkbook.Path & "\Sample.html"

 Open htmlFile For Output As #1
 
 i = 1
 Do While Not (ws.Cells(i, 1).Value = "" And ws.Cells(i, 2).Value = "" And ws.Cells(i, 3).Value = "")
  LineData = "<div>" & ws.Cells(i, 1).Value & "</div>" & vbCrLf
  LineData = LineData & "<p>" & ws.Cells(i, 2).Value & "</p>" & vbCrLf
  LineData = LineData & "<span>" & ws.Cells(i, 3).Value & "</span>" & vbCrLf
  Print #1, LineData
  i = i + 1
 Loop

 Close #1
 MsgBox htmlFile & "に書き出しました"

End Sub

投稿日時 - 2019-11-15 14:59:49

QNo.9679156

困ってます

質問者が選んだベストアンサー

二つを合成したら

Sub convertHTML_UTF_8()
Dim ws As Worksheet
Dim i As Long
Dim LineData As String
Dim Target As String

Target = ActiveWorkbook.Path & "\Sample_UTF_8.html"
Set ws = ThisWorkbook.Worksheets(1)
i = 1
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
LineData = ""
Do While Not (ws.Cells(i, 1).Value = "" And ws.Cells(i, 2).Value = "" And ws.Cells(i, 3).Value = "")
LineData = LineData & "<div>" & ws.Cells(i, 1).Value & "</div>" & vbCrLf
LineData = LineData & "<p>" & ws.Cells(i, 2).Value & "</p>" & vbCrLf
LineData = LineData & "<span>" & ws.Cells(i, 3).Value & "</span>" & vbCrLf
i = i + 1
Loop
.WriteText LineData, 1
.SaveToFile Target, 2
.Close
End With
MsgBox Target & "に書き出しました"
End Sub

投稿日時 - 2019-11-15 15:41:28

お礼

コメントありがとうございます。
おかげさまでできました。
参考サイトとはちょっと違った記述になっているので、じっくり勉強します。

投稿日時 - 2019-11-15 17:58:36

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

> パスが違いますとエラーメッセージ
は保存先フォルダがない場合などに出ますが
ActiveWorkbook.Path はブックを新規で開いたままで保存していない場合には有効にならないのでそのようなエラーになります。

投稿日時 - 2019-11-15 15:28:14

あなたにオススメの質問