0

Excel からタブ区切りファイルを生成したい (数式を使用して文字列を設定する) 関数として保存を使用したくない理由は、1 つのスプレッドシートから多くの異なる csv/txt ファイルを生成するためです。保存すると、メインファイルの拡張子が変更されます。

これは私が Excel に持っているものです。関数はすべての列を中央のタブで連結する必要があり、Desc フィールドは二重引用符で囲む必要があります。

ここに画像の説明を入力

セル D2 の内容をテキスト エディターにコピーすると、次の文字列が返されます

「トヨタ・カローラ」「ここで説明」「」

ご覧のとおり、Excel は文字列全体に二重引用符を配置することを決定し、元の引用符をエスケープします...

これを修正する方法はありますか?

4

2 に答える 2

0

配置したいデータを.csvファイルにコピーし、Excelの新しいインスタンスを開いて、データを貼り付けてから、.csvファイルとして保存してみませんか?

于 2012-08-17T15:56:39.930 に答える
0

Excel のタブ区切りのエクスポートは完全に機能しますが、タブ区切りのファイルを選択範囲でできるだけ早く生成する必要がありました。

以下のコードを見つけて編集し、それに Excel マクロ ショートカットを割り当てました。

    Sub QuoteCommaExport()
    Dim DestFile As String
    Dim FileNum As Integer
    Dim ColumnCount As Integer
    Dim RowCount As Integer

    ' Prompt user for destination file name.
    DestFile = InputBox("Enter the destination filename" & _
      Chr(10) & "(with complete path and extension):", _
      "Quote-Comma Exporter", "C:\myTabFile.txt")
    ' 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

    Dim topString
    For ColumnCount = 1 To Selection.Columns.Count

        If ColumnCount < Selection.Columns.Count Then
            topString = topString & """" & ActiveSheet.Cells(ColumnCount, 1).Text & """" & vbTab
            Else
            topString = topString & """" & ActiveSheet.Cells(ColumnCount, 1).Text & """"
        End If
    Next ColumnCount
    Print #FileNum, topString

    ' 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, ",";
              Print #FileNum, vbTab;
         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
于 2012-08-17T16:26:39.827 に答える