タグ別アーカイブ: VBA

Excel VBAでテキストを書き出す

こんにちは、ジンです。
Excel VBAを使ってテキストファイルを生成するサンプルを書きます。
生成されるファイルの文字コードはshift-jisがディフォルトのようですが
UTF-8に変換する方法も書いておきます。

excel_text

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Private Sub CommandButton1_Click()
 
'宣言
Dim tf_name, path, FN As String
 
'保存するファイル名
tf_name = "demotext.txt"
 
'ファイルのフルパス
path = ActiveWorkbook.path & "\"
FN = path & tf_name
 
'ファイルの生成開始
Open FN For Output As #1
 
'一行分の書き込み
Print #1, "ここにテキストを書き込みます。"
 
'セルの縦方向に入力されている分すべて書き込みたい場合
For i = 1 To Worksheets(1).Range("A1").End(xlDown).Row
    Print #1, Worksheets(1).Cells(i, 1).Value
Next i
 
 
'ファイルを閉じる
Close #1
 
 
'文字コード処理(JISからUTF-8に変換する場合)
Dim stream As Object
Dim stream2 As Object
 
Set stream = CreateObject("ADODB.Stream")
    stream.Open
    stream.Type = 2
    stream.Charset = "shift_jis"
    stream.LoadFromFile FN
 
Set stream2 = CreateObject("ADODB.Stream")
    stream2.Open
    stream2.Charset = "utf-8"
    stream.CopyTo stream2
    stream2.SaveToFile (FN), 2
    stream2.Close
    stream.Close
 
Set stream2 = Nothing
Set stream = Nothing
 
 
'終了メッセージ表示
MsgBox "ファイルの生成が終わりました。"
 
 
End Sub

Excel VBA 複数のHTMLファイルを書き出す

こんにちは、ジンです。

今回はExcelのVBAを使ってhtmlを書きだすサンプルを残しておきます。サーバーの環境によってはCGIやPHPなどが使えず、動的にページを作成できない場合において、定型のページを数多く生成するには大変便利な方法だと思います。またエクセルの表のデータをそのまま使用できるので、データベースを組むほどでもないサイトを作成する際もメリットはあるかと思います。

サンプルでは横には8個の項目、縦にはデータを入れた分だけhtmlの作成を行うようにしています。
こんな表を想像していただければ分かりやすいかと思います。
excel_html

仮にシートに「CommandButton1」というボタンを配置して、ボタンと押したときに実行する場合のサンプル

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub CommandButton1_Click()
 
'HTMLファイルを作成
 
For n = 2 To Worksheets("リスト").Range("$B$65536").End(xlUp).Row
 
Path = ActiveWorkbook.Path & "\"
FN = Path & Worksheets("リスト").Cells(n, 2).Value & ".html"
 
Open FN For Output As #1
 
    Print #1, "<html>"
    Print #1, "<meta http-equiv=" & Chr(34) & "Content-Type" & Chr(34) & "content=" & Chr(34) & "Text / html; Charset = shift_jis" & Chr(34) & " />"
    Print #1, "<title>" & Worksheets(1).Cells(n, 2).Value & "</title>"
    Print #1, "</head>"
    Print #1, "<body>"
    Print #1, Worksheets(1).Cells(n, 1).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 2).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 3).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 4).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 5).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 6).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 7).Value
    Print #1, "<br />"
    Print #1, Worksheets(1).Cells(n, 8).Value
    Print #1, "<br />"
    Print #1, "</body>"
    Print #1, "</html>"
 
Close #1
 
Next n
 
MsgBox "書き出しました"
 
End Sub