[英]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.