テキストファイルに書き込む
テキストファイルを作成し、1行を書き込みます。既存ファイルなら全内容を置き換えます。
実行前に確認
- Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
- For Outputで開いた時点で既存の内容が消えます。必ずバックアップし、失ってよいファイルで試してください。
- Windowsの既定文字コードを使う例で、UTF-8指定はできません。別の文字コードのファイルへ追記しないでください。
1サンプルコード
Sub Example4020()
Dim filePath As String, fileNumber As Integer, opened As Boolean, message As String
filePath = "C:\Data\sample.txt"
If MsgBox(filePath & vbCrLf & "既存の内容を消して書き込みます。続けますか?", _
vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
On Error GoTo Failed
fileNumber = FreeFile
Open filePath For Output As #fileNumber
opened = True
Print #fileNumber, "新しい内容"
Close #fileNumber
opened = False
MsgBox "書き込みました: " & filePath
Exit Sub
Failed:
message = Err.Description
On Error Resume Next
If opened Then Close #fileNumber
On Error GoTo 0
MsgBox message
End Sub図で見るファイルの変化
イメージ図概念図:既存内容を残さず、指定の1行で置き換えます。
変更前
C:\Data\sample.txt 既存ファイルなら元の内容あり
手動:承認
バックアップ後、上書き確認で[はい]
マクロ:書き込み
For Outputで開いて旧内容を消し、Print #で書く
変更後
C:\Data\sample.txt 新しい内容 (末尾に改行)
[いいえ]なら変更なし。ファイル未作成なら新規作成します。開いた時点で旧内容は消え、エラーでも元へ戻りません。UTF-8指定ではありません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
C:\Dataなどの保存先フォルダーを用意し、filePathを練習用ファイルのパスへ変更します。既存ファイルは先にバックアップします。
- 3
Print #の「新しい内容」を保存したい文字へ変更します。
- 4
実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面で対象と処理内容を読み、続けてよい場合だけ[はい]を押します。
- 5
指定した文字と改行が保存されます。既存のファイル内容はすべて置き換わります。 メモ帳でファイルを開き、結果を確認します。