アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

スペース区切りテキストの書き出し

スペース区切りテキストの書き出し


  スペース区切りテキストの書き出しは、CSVファイルの書き出しと殆ど同じです。

  違いは、Write文 の代わりに Print文 を使います。

  Write文はカンマが自動で入りますが、 Print はスペースの挿入を指定します。

  Write文と同様に変数の最後にセミコロン (;)を付けると改行が入らなくなります。

  このサンプルでは、ループ制御に For Each を使用して、CSVファイルの書き出しよりも
  スマートになってます。

  example20 をダウンロードして動作を確認してください。

Sub Spc_Write()

    Dim FileType, Prompt As String
    Dim FileNamePath As Variant
    Dim Max_Column As Integer
    Dim Columncnt As Integer
    Dim UsedCell As Range
    Dim RowsCells As Range
    Dim ch1 As Long
    
    FileType = "txt ファイル (*.txt),*.txt"
    Prompt = "保存するファイルの名前を付けてください"
    '保存するファイルのパスを取得します
    FileNamePath = SaveFileNamePath(FileType, Prompt)

    If FileNamePath = False Then    'キャンセルボタンが押された
        End
    End If
        
    '空いているファイル番号を取得します
    ch1 = FreeFile
    'FileNamePath のファイルをオープンします
    Open FileNamePath For Output As #ch1
    
    '使用しているセルの取得
    Set UsedCell = ActiveSheet.UsedRange
    
    '最大のコラム数の取得
    Max_Column = UsedCell.Columns.Count
    
    For Each RowsCells In UsedCell.Rows
        For Columncnt = 1 To Max_Column - 1
            '改行を挿入しないで書き出す ; を最後に付ける
            Print #ch1, RowsCells.Columns(Columncnt).Text; Spc(1);
        Next
        '改行を挿入する
        Print #ch1, RowsCells.Columns(Max_Column).Text
    Next
                
    'ファイルを閉じます
    Close #ch1

End Sub

Function SaveFileNamePath(FileType, Prompt) As Variant
  SaveFileNamePath = Application.GetSaveAsFilename _
                                  (ActiveSheet.Name, FileType, , Prompt)
End Function


Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.