ExcelVBA書き込みテキストファイル
VBAでは、テキストファイルを開いたり、読み取ったり、書き込んだりできます。テキストファイルを書き込むとは、Excelシートにあるデータを意味し、テキストファイルまたはメモ帳ファイルに保存する方法が2つあります。1つは次の方法です。 VBAのファイルシステムオブジェクトプロパティを使用する方法と、VBAでOpen andwriteメソッドを使用する方法があります。
ほとんどの企業では、レポートが完成すると、データベースにレポートをアップロードしようとします。データベースにアップロードするには、「テキストファイル」形式を使用してデータベースを更新します。通常、Excelからデータをコピーしてテキストファイルに貼り付けます。テキストファイルに依存する理由は、軽量でシンプルな方法で操作が非常に簡単だからです。VBAコーディングを使用することで、Excelファイルからテキストファイルにデータをコピーするタスクを自動化できます。この記事では、VBAコードを使用してExcelファイルからテキストファイルにデータをコピーまたは書き込む方法を紹介します。
VBAを使用してテキストファイルにデータを書き込む方法は?
Excelからテキストへのデータの書き込みは複雑なコーディングであり、VBAコーディングに関する非常に優れた知識が必要です。以下の手順に従って、ExcelからテキストファイルにデータをコピーするVBAコードを記述します。
コードの記述方法を説明する前に、openステートメントを使用してテキストファイルを開く方法を説明します。
開いているテキストファイルの構文
[ファイルパス]を開き、[モード]の場合は[ファイル番号]として
ファイルパス:コンピューターで開こうとしているファイルのパス。
モード:モードは、テキストファイルを開く際に使用できるコントロールです。テキストファイルを3種類制御できます。
- 入力モード:これは、開いているテキストファイルの「読み取り専用」制御を提案します。「入力モード」を使用すると、ファイルに対して何もできなくなります。テキストファイルの内容を読み取るだけです。
- 出力モード:このオプションを使用して、コンテンツを書き込むことができます。ここで覚えておく必要があるのは、既存のデータがすべて上書きされるということです。したがって、古いデータが失われる可能性があることに注意する必要があります。
- 追加モード:このモードは、出力モードの完全に反対です。この方法を使用すると、ファイル内の既存のデータの最後に新しいデータを実際に書き込むことができます。
ファイル番号:開いているすべてのテキストファイルのテキストファイル番号をカウントします。これにより、開いているファイル番号が1〜511の整数値で認識されます。ファイル番号の割り当ては注意が必要であり、多くの混乱を招きます。このために、無料のファイル機能を使用できます。
Free Fileは、開いているファイルの一意の番号を返します。このようにして、重複する値を一切使用せずに一意のファイル番号を割り当てることができます。
このVBA書き込みテキストファイルテンプレートはここからダウンロードできます–VBA書き込みテキストファイルテンプレート例1
以下の手順に従って、新しいテキストファイルを作成するコードを記述します。
コンピュータのストレージに「Hello.txt」という名前のテキストファイルがすでにあると仮定し、そこにデータを書き込む方法を説明します。
ステップ1:変数を宣言する
ファイルパスを文字列として保持する変数を宣言します。
コード:
Sub TextFile_Example1()Dim Path As String End Sub
ステップ2:ファイル番号を決定する
参照しているファイル番号を判別するために、もう1つの変数を整数として宣言します。
コード:
Sub TextFile_Example1()Dim Path As String Dim FileNumber As Integer End Sub
ステップ3:ファイルパスを割り当てる
ここで、Path変数にファイル名をファイルパスに割り当てます。
コード:
Sub TextFile_Example1()Dim Path As String Dim FileNumber As Integer Path = "D:\ Excel Files \ VBA File \ Hello.txt" '要件に応じてパスを変更しますEndSub
ステップ4:空きファイル機能を割り当てる
次に、ファイル番号変数に関数「ファイルの解放」を割り当てて、一意のファイル番号を保存します。
コード:
Sub TextFile_Example1()Dim Path As String Dim FileNumber As Integer Path = "D:\ Excel Files \ VBA File \ Hello.txt" '要件に応じてパスを変更しますFileNumber = FreeFile End Sub
ステップ5:テキストファイルを開く
次に、テキストファイルを開いて操作する必要があります。説明したように、テキストファイルを開くにはOPENステートメントを使用する必要があります。
ステップ6:印刷/書き込み方法を使用する
ファイルを開いたら、そこに何かを書き込む必要があります。テキストファイルに書き込むには、「書き込み」または「印刷」のいずれかの方法を使用する必要があります。
コード:
Sub TextFile_Example1()Dim Path As String Dim FileNumber As Integer Path = "D:\ Excel Files \ VBA File \ Hello.txt" '要件に応じてパスを変更しますFileNumber = FreeFile Open Path For Output As FileNumber Print #FileNumber、 " Welcome "Print#FileNumber、" to "Print#FileNumber、" VBA "End Sub
まず、ファイル番号を指定する必要があります(ここでは、「FileNumber」変数を使用してファイルを割り当てています)。次に、追加するコンテンツをテキストファイルに追加する必要があります。
ステップ7:テキストファイルを保存して閉じる
コンテンツがテキストファイルに書き込まれたら、テキストファイルを保存して閉じる必要があります。
コード:
Sub TextFile_Example1()Dim Path As String Dim FileNumber As Integer Path = "D:\ Excel Files \ VBA File \ Hello.txt" '要件に応じてパスを変更しますFileNumber = FreeFile Open Path For Output As FileNumber Print #FileNumber、 " Welcome "Print#FileNumber、" to "Print#FileNumber、" VBA "Close FileNumber End Sub
ここで、これを手動で、またはショートカットExcelキーF5を介してコードを実行すると、前述のテキストファイルに前述のコンテンツが書き込まれます。
例2
次に、Excelシートのデータをテキストファイルに書き込む方法を説明します。
この例では、以下のようなExcelで簡単なデータを作成しました。
ステップ1:古い例の続きで、最後の行と最後の列を見つけるために、さらに2つの変数を整数として定義します。
コード:
Sub TextFile_Example2()Dim Path As String Dim FileNumber As Integer Dim LR As Integer Dim LC As Integer End Sub
ステップ2:ワークシートで最後に使用された行と列を見つけます。
ステップ3:ファイルパスとファイル番号を割り当てます。
手順4: OPENステートメントを使用してテキストファイルを開きます。
ステップ5:行と列をループする必要があるため、さらに2つの変数を整数として宣言します。
手順6:ループを開いて行をループします(VBAの次のループの場合)
ステップ7:列をループするには、既存のループ内にもう1つのループを開きます。
ステップ8:最後の列に到達するまで、同じ行のデータを書き込む必要があります。したがって、これにはVBAでIFステートメントを適用します。
手順9:テキストファイルを保存して閉じます。
このコードは詳細をテキストファイルに書き込みますが、書き込んだ後にテキストファイルを開くには、以下のコードを使用する必要があります。
コード:
Sub TextFile_Example2()Dim Path As String Dim FileNumber As Integer Dim LR As Integer Dim LC As Integer Dim k As Integer Dim i As Integer LR = Worksheets( "Text")。Cells(Rows.Count、1).End(xlUp) .Row LC = Worksheets( "Text")。Cells(1、Columns.Count).End(xlToLeft).Column Path = "D:\ Excel Files \ VBA File \ Hello.txt" FileNumber = FreeFile Open Path For Output As FileNumber For k = 1 To LR For i = 1 To LC If i LC Then Print#FileNumber、Cells(i、k)、Else Print#FileNumber、Cells(i、k)End If Next i Next k Close FileNumber Shell "notepad .exe "&Path、vbNormalFocus End Sub
したがって、F5キーを使用して、または手動でコードを実行すると、次のようにデータがコピーされます。