0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Q18.テキストファイルを作成するには?

Last updated at Posted at 2020-01-26

VBAではテキストファイルを作成することができます。
今回は日付.txtという日次で使えるようなファイルを複数日文出力するマクロを
作っていきましょう。

例えば、今日が20200126だとしたら、3週間分の20200215までのファイルを作成します。
20200126.txt ~ 20200215.txtというファイルです。

■ポイント

ファイルを作成するには、
Open ファイル名(フルパス) For Output As #番号もしくは、Open ファイル名(フルパス) For Append As #番号
とします。番号は1から割り当ててください。
これは、ファイルを作成するというよりは、対象のファイルを開く(選択する)という意味合いになりますが、対象のファイルが存在しない場合は、新規で作成されます。

今回はこれを利用してファイルを作成していきます。

OutputとAppendの違いは、既存のファイルがあった場合の動作が異なります。
Outputの場合は新規のファイルで上書きされてしまいます。
Appendの場合は、追記で書き込むことができます。

例えば、マクロを利用して、日付ファイルを生成しました。
日付ファイルに内容を書き込みました。
また、同じようにマクロを動かしました。

この時、Outputで作成した場合は、同名ファイルがあった場合、
上書きされてしまいますので、元のファイルの内容があった場合、消失してしまいます。
appendで作成した場合は、追記されますので、元のファイルの内容は残されたままとなります。

ということで、今回はappenndを利用した方がいいでしょう。

■回答

Sub Q18_Answer()
    Dim buf As String, cnt As Long, Path As String, i As Integer
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            Path = .SelectedItems(1)
        End If
    End With
    For i = 0 To 20
        Open Path & "\" & Format(Date + i, "yyyymmdd") & ".txt" For Append As #1
        Close #1
    Next i
End Sub

■解説

今回は、出力先をダイアログから指定できるようにしました。
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = True Then
Path = .SelectedItems(1)
End If
End With

この記述で、フォルダを選択し、選択されたフォルダのパスが変数Pathに格納できます。

あとは、Forループで、テキストファイルを作成処理を複数回実行するだけです。
具体的には、以下の記述でファイルを作成しています。
Open Path & "" & Format(Date + i, "yyyymmdd") & ".txt" For Append As #1

実行結果は以下のとおりです。

Q18.png

実行すると、フォルダ選択ダイアログが出力されますので、今回はデスクトップ配下に作成した新しいフォルダーを選択しています。

OKボタンを押すと、以下のように無事ファイルが生成されました。

Q18-1.png

ただし、フォルダ選択ダイアログで、キャンセルを選択するとパスがないので、
エラーとなってしまいます。そこは別途エラー処理を記述するなど、対処が必要となります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?