Excel でコンマ区切り記号と引用符区切り記号の両方を含むテキスト ファイルをエクスポートする手順

概要

Microsoft Excel には、テキスト ファイルにデータを自動的にエクスポートするメニュー コマンドがないため、テキスト ファイルは引用符とコンマの両方を区切り記号としてエクスポートされます。 たとえば、次のデータを含むテキスト ファイルを自動的に作成するコマンドはありません。

"Text1","Text2","Text3"

ただし、この機能は、Microsoft Visual Basic for Applications プロシージャを使用して Excel で作成できます。

詳細

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

次のような Visual Basic プロシージャで Print # ステートメントを使用して、区切り記号として引用符とコンマの両方を含むテキスト ファイルをエクスポートできます。 プロシージャが正しく機能するには、データを実行する前に、データを含むセルを選択します。

次のサンプル コードを使用する前に、次の手順に従います。

  1. 新しいブックを開きます。

  2. Microsoft Office Excel 2003 または Microsoft Excel 2002 で、[ツール] メニューの [マクロ] をポイントし、[Visual Basic エディター] をクリックします。 または、Alt キーを押しながら F11 キーを押します。

    Microsoft Office Excel 2007 で、[開発者] タブをクリックし、[コード] グループの [Visual Basic] をクリックします。 または、Alt キーを押しながら F11 キーを押します。

    注:

    リボンの [開発者] タブを表示するには、[Microsoft Office] ボタンをクリックし、[Excel のオプション] をクリックし、[一般的なカテゴリ] をクリックし、[リボン チェック] ボックスの [開発者の表示] タブをクリックして選択し、[OK] をクリックします

  3. Visual Basic エディターで、[挿入] メニューの [モジュール] をクリックします。

  4. 次のサンプル コードを入力するか、モジュール シートに貼り付けます。

    Sub QuoteCommaExport()
       ' Dimension all variables.
       Dim DestFile As String
       Dim FileNum As Integer
       Dim ColumnCount As Long
       Dim RowCount As Long
    
       ' Prompt user for destination file name.
       DestFile = InputBox("Enter the destination filename" _
          & Chr(10) & "(with complete path):", "Quote-Comma Exporter")
    
       ' Obtain next free file handle number.
       FileNum = FreeFile()
    
      ' Turn error checking off.
       On Error Resume Next
    
       ' Attempt to open destination file for output.
       Open DestFile For Output As #FileNum
    
       ' If an error occurs report it and end.
       If Err <> 0 Then
          MsgBox "Cannot open filename " & DestFile
          End
       End If
    
       ' Turn error checking on.
       On Error GoTo 0
    
       ' Loop for each row in selection.
       For RowCount = 1 To Selection.Rows.Count
    
       ' Loop for each column in selection.
          For ColumnCount = 1 To Selection.Columns.Count
    
            ' Write current cell's text to file with quotation marks.
             Print #FileNum, """" & Selection.Cells(RowCount, _
                ColumnCount).Text & """";
    
             ' Check if cell is in last column.
             If ColumnCount = Selection.Columns.Count Then
                ' If so, then write a blank line.
                Print #FileNum,
             Else
                ' Otherwise, write a comma.
                Print #FileNum, ",";
             End If
          ' Start next iteration of ColumnCount loop.
          Next ColumnCount
       ' Start next iteration of RowCount loop.
       Next RowCount
    
       ' Close destination file.
       Close #FileNum
    End Sub
    
  5. マクロを実行する前に、エクスポートするデータを選択し、QuoteCommaExport サブルーチンを実行します。