簡體   English   中英

vba復制帶有分號分隔符的csv文件

[英]vba copy csv file with semicolon delimiters

我正在使用宏將csv文件復制到新的工作表中,這一部分效果很好。 但是,我的csv文件使用分號作為分隔符,並且當我使用以下代碼時,文本不會分成幾列:

Sub Bam()
    Dim FilesToOpen
    Dim wkbAll As Workbook
    Dim wkbTemp As Workbook
    Dim newSheet As Worksheet
    FilesToOpen = Application.GetOpenFilename _
    (FileFilter:="Text Files (*.csv), *.csv", Title:="Text Files to Open")  
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen)
    wkbTemp.Sheets(1).Cells.Copy
    Set newSheet = ThisWorkbook.Sheets.Add
    With newSheet
        .Name = wkbTemp.Name
        .PasteSpecial
    End With
    Application.CutCopyMode = False
    wkbTemp.Close
End Sub

我試圖使用以下命令將分號設置為定界符:

With newSheet
    .Name = wkbTemp.Name
    .PasteSpecial
    .TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Semicolon:=True
End With

要么

Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Delimiter:=4)

但是,在第一種情況下,當我嘗試使用宏時會出現以下錯誤消息:

突出顯示.TextToColumns

Compile error:
Method or data member not found.

在第二種情況下,什么也沒有發生,所有文本仍顯示在一欄中。

有沒有人想過將分號設置為定界符?

謝謝

我首先將數據帶入A列,然后解析出數據:

Sub Bam()
    Dim FilesToOpen, v As Variant
    Dim wkbAll As Workbook
    Dim wkbTemp As Workbook
    Dim newSheet As Worksheet, N As Long, J As Long
    FilesToOpen = Application.GetOpenFilename _
    (FileFilter:="Text Files (*.csv), *.csv", Title:="Text Files to Open")
    Close #1
    Open FilesToOpen For Input As #1
    J = 1
    Do While Not EOF(1)
            Line Input #1, TextLine
            Cells(J, 1) = TextLine
            J = J + 1
    Loop
    Close #1

    N = Cells(Rows.Count, "A").End(xlUp).Row
    For J = 1 To N
        v = Cells(J, 1).Value
        If InStr(v, ";") > 0 Then
            ary = Split(v, ";")
            For i = LBound(ary) To UBound(ary)
                Cells(J, i + 1).Value = ary(i)
            Next i
        End If
    Next J
End Sub

我喜歡你的方式,我會研究的。 同時,我找到了一種方法! 我將* .csv文件的擴展名修改為* .txt,並稍微更改了代碼,例如:

Sub Bam()
    Dim FilesToOpen
    Dim wkbAll As Workbook
    Dim wkbTemp As Workbook
    Dim newSheet As Worksheet
    FilesToOpen = Application.GetOpenFilename(Title:="Text Files to Open")
        Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen, Format:=4)
        wkbTemp.Sheets(1).Cells.Copy
        Set newSheet = ThisWorkbook.Sheets.Add
        With newSheet
            .Name = wkbTemp.Name
            .PasteSpecial
        End With
        Application.CutCopyMode = False
        wkbTemp.Close   
End Sub

這並不是我想要的,因為我現在必須修改生成* .csv文件的腳本,但是它可以工作!

感謝您的想法,我將認真研究它,也許我不必修改腳本。 在所有情況下,非常感謝,我一直對新聞的工作方式充滿好奇,並一直希望改進我的代碼! :) 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM