7

いくつかの .csv ファイルを開き、文字で区切られた情報を列に分割する Excel VBA コードをセットアップしようとしています|。なんとかファイルを開くことができましたが、使用するコードは、区切り記号に従ってテキストを分割せずにファイルを開きます。これまでのところ、次のコードを試しました。

Sub OpenCSV()

Dim wkbTemp As Workbook
Dim sPath As String, sName As String

sPath = ThisWorkbook.Path & "\CSV_Files\"
sName = "Test.csv"

Set wkbTemp = Workbooks.Open(Filename:=sPath & sName, Format:=6, Delimiter:="|")

End Sub
4

8 に答える 8

4

これが私を狂気に駆り立てたことを覚えています。
Excel は制御不能な.csvファイル欲を持っているようです。エンディング(.txt.datまたはその他)を変更するだけで機能します!

于 2013-07-24T12:12:21.060 に答える
2

これをやってみました。うまくいきません。ただし、テキスト ファイルで同じことを試みると (csv の内容をコピーしてテキスト ファイルに貼り付ける)、機能します。

MSDNリンクを見ると、「workbooks.open」メソッドの「Delimiter」パラメータの記述に「テキストファイルの場合」と具体的に書かれています。たぶん、これが機能していない理由です。

私はわかりません。これは私にとっても新しいことです。お役に立てれば。

于 2013-07-24T12:11:58.447 に答える
1

ローワンのソリューションは実際に機能します。キーは、彼のソリューションのファイル名「Test.csv」を「\CSV_Files\」の場所にある「Test.txt」に置き換えることです。「Test.txt」は、カンマ区切りの値の型であってはなりません。真の TXT ファイル タイプである必要があります。

Windows エクスプローラーでファイルの種類を確認します。CSV でないことを確認してください。CSV タイプを使用する場合、実際にはデータがパイプ区切り文字ではなくコンマで解析されることを Excel に伝えることになります。

ワークブックがルートにある場合: c:\ ディレクトリを作成します: C:\CSV_Files テキスト ファイルを配置します: Test.txt ディレクトリ \CSV_Files

ワークブックで VBA を開き、以下の完全な VBA コードをコピーします。

完全な VBA コードは次のようになります。

Sub OpenCSV()

Dim wkbTemp As Workbook
Dim sPath As String, sName As String

sPath = ThisWorkbook.Path & "\CSV_Files\"
sName = "Test.txt"
 Workbooks.OpenText Filename:=sPath & sName, _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="|"
Set wkbTemp = ActiveWorkbook

end sub

VBA を閉じて、マクロを実行します。

于 2013-10-19T22:47:31.853 に答える
0

これはあなたを助けるはずだと思います。

Sub OpenCSV()

Dim wkbTemp As Workbook
Dim sPath As String, sName As String

sPath = ThisWorkbook.Path & "\CSV_Files\"
sName = "Test.csv"
 Workbooks.OpenText Filename:=sPath & sName, _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
    , Comma:=False, Space:=False, Other:=True, OtherChar:="|"
Set wkbTemp = ActiveWorkbook

end sub
于 2013-07-24T12:13:51.740 に答える
0

で試してみてください

Delimiter:= Chr(124)

文字 124 はパイプ「|」です。

于 2013-07-24T12:04:16.840 に答える
0
Option Explicit
Private Sub Text2Excel()
Dim excel_app As Excel.Application
Dim max_col As Integer
Dim txtFromFile As Variant
Dim Sep As String

    'DoEvents

Application.ScreenUpdating = False

    txtFromFile = Application.GetOpenFilename(FileFilter:="Text Files (*.txt),*.txt," & _
                                                "CSV Files (*.csv),*.csv")
    If txtFromFile = False Then
        ''''''''''''''''''''''''''
        ' user cancelled, get out
        ''''''''''''''''''''''''''
        Exit Sub
    End If

    Sep = Application.InputBox("Enter a separator character." & vbNewLine & "For TAB Delimited keep BLANK.", Type:=2)

    If Sep = vbNullString Then
        ' user cancelled, get out
       Sep = vbTab
    End If

    'Pull the data from test file to activesheet

    Workbooks.OpenText FileName:=txtFromFile, DataType:=xlDelimited, Other:=True, otherchar:=Sep, local:=True

    MsgBox "Data from selected file " & txtFromFile & " has been pulled to Excel.", vbInformation

Application.ScreenUpdating = False

End Sub
于 2014-11-07T13:32:53.863 に答える