VBAでテキストファイルを読み込み/書き込み
VBAでテキストファイルを読んだり書いたりするために、マクロを作成。
1.テキストを読み込む
テキストファイルをStringまたはString配列で読み込みます。
Private Function readText(fullFileName As String, Optional outputType = 1, Optional charcode = 0) '----------------------------------------------- ' readText ' 引数の情報でテキストファイルを読み込む ' 使用注:VBAでMicrosoftADOの参照設定が必要 ' ' 引数1:fullFileName String ファイルパス ' 引数2:outputType String 出力タイプ(省略可、デフォルト1) ' 0:String型 ' 1:String()型 ' 引数3:charcode long 文字コード(省略可、デフォルト0) ' 0:Shift-JIS ' 1:UTF-8 ' '----------------------------------------------- Dim str As String 'Streamオブジェクト作成 'オブジェクトに保存するデータの種類を文字列型に指定する '文字列型のオブジェクトの文字コードを指定する 'オブジェクトのインスタンスを作成 'ファイルからデータを読み込む If outputType = 1 Then Else 'オブジェクトを閉じる 'メモリからオブジェクトを削除する If outputType = 1 Then End Function |
第1引数にフルパスのファイル名
第2引数には返却する型
第3引数にはファイルの文字コードを指定できます。(Shit-JIS/UTF-8)
行単位で処理したい時はString()で返却する様にしますね。
2.テキストを書き込む(文字列型)
Stringのデータをテキストファイルに書き込みます。
Private Sub writeText(fullFileName As String, text As String, Optional overWriteClass = 1, Optional charcode = 0) '----------------------------------------------- ' writeText ' 引数の情報でテキストファイルへ書き込む ' 使用注:VBAでMicrosoftADOの参照設定が必要 ' ' 引数1:fullFileName String ファイルパス ' 引数2:text String 書き込みテキスト(改行可) ' 引数3:overWriteClass long 上書き区分(省略可、デフォルト1) ' 0:上書きしない ' 1:上書きする(ファイルない場合新規作成) ' 2:追記する(ファイルない場合新規作成) ' 引数4:charcode long 文字コード(省略可、デフォルト0) ' 0:Shift-JIS ' 1:UTF-8 ' '----------------------------------------------- Dim wText As String 'Streamオブジェクト作成 'オブジェクトに保存するデータの種類を文字列型に指定する '文字列型のオブジェクトの文字コードを指定する '出力タイプ2:追記の場合、既存テキストを読み込む Else Err1: 'オブジェクトのインスタンスを作成 'テキストをオブジェクトに書き込む 'オブジェクトの内容をファイルに保存 Else End If 'オブジェクトを閉じる 'メモリからオブジェクトを削除する End Sub |
3.テキストを書き込む(文字配列型)
項番2のwriteText()を使用して
String配列のデータをテキストファイルに書き込みます。
Private Sub writeTextByStrArr(fullFileName As String, text() As String, Optional overWriteClass = 1, Optional charcode = 0) '----------------------------------------------- ' writeTextByStrArr ' writeText()を使用してStrArr型の文字列をテキストファイルへ書き込む ' 使用注:VBAでMicrosoftADOの参照設定が必要 ' ' 引数1:fullFileName String ファイルパス ' 引数2:text() String 書き込みテキスト ' 引数3:overWriteClass long 上書き区分(省略可、デフォルト1) ' 0:上書きしない ' 1:上書きする(ファイルない場合新規作成) ' 2:追記する(ファイルない場合新規作成) ' 引数4:charcode long 文字コード(省略可、デフォルト0) ' 0:Shift-JIS ' 1:UTF-8 ' '----------------------------------------------- Dim wStr As String Dim x As Long For x = 0 To UBound(text) - 1 wStr = wStr + text(x) + vbCrLf Next x '最終行は改行追加しない wStr = wStr + text(x) Call writeText(fullFileName, wStr, overWriteClass, charcode) End Sub |
MicrosoftADOの参照設定
今回作成したマクロではVBAで[Microsoft ActiveX Data Objects]の参照設定が必要。
以下の通り。
2014.6.13 訂正
上記のwriteTextByStrArr()に誤りがあり、
以下のコードを削除しました。
参照していた方、申し訳ありません。
> '最終行は改行追加しない > > wStr = wStr + text(x) |