运行 列 A:A 的 text2column
Running text2column for column A:A
我对 VBA 脚本编写还很陌生,但我必须执行以下操作:
- 将 csv 文件转换为 xls 文件
- 在保存的xls文件中执行以下操作:
1. To 运行 Text To Columns 为数据
2. 定义每列的类型(金额、日期、文本)。
3. 使金额和日期列中的前 0 可见(例如“04521.6823”和日期“05/02/2020”)。在这里我打算使用 .NumberFormat 选项。
我成功转换文件,但无法执行 Text2Column 部分。
我的数据只在A列,分隔符“;”,只在sheet1上。
这是我最新的代码 运行:
Sub text2columns()
Dim rg As Range
Set rg = Range("A:A").CurrentRegion
rg.TextToColumns Destination:=Range("A:A"), ConsecutiveDelimiter:=True, DataType:=xlDelimited, Space:=True
End Sub
谁能帮帮我?我知道问题很基本,但需要一些帮助才能继续。
谢谢!
您提到了目的地:=范围("A:A")。
此外,您的输入和输出范围不能相同。
我想,它不应该是一列,只是一个单元格
请检查 Destination:=Range("B1") 是否有效。
格式样式 ~> 1:制表符,2:逗号,3:space,4:semiclone,5:None,6:User的字母
Sub TransToXLSFromCSV()
Dim vFile As Variant
Dim vDB
Dim fn As String
Dim strPath As String
Dim i As Long
Dim Wb As Workbook
strPath = ThisWorkbook.Path
vFile = Application.GetOpenFilename("Select Text Files *.txt,*.txt;*.csv", _
Title:="Select Text Files!", MultiSelect:=True)
If TypeName(vFile) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
For i = 1 To UBound(vFile)
fn = Dir(vFile(i))
fn = Left(fn, Len(fn) - 4)
Set Wb = Workbooks.Open(Filename:=vFile(i), Format:=2) '<~~ Foramt style comma
vDB = Wb.ActiveSheet.UsedRange
Wb.Close
Set Wb = Workbooks.Add
With Wb
.ActiveSheet.Range("a1").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
.SaveAs Filename:=strPath & "\" & fn & ".xlsx"
.Close (0)
End With
Next i
Application.ScreenUpdating = True
End Sub
请试试这个代码:
Sub text2columns()
Dim rg As Range, arrFlInf(19) As Variant, i As Long
For i = 0 To UBound(arrFlInf)
Select Case i
Case 1 - 8, 10 'Text
arrFlInf(i) = Array(i + 1, 2)
Case 12 - 15, 18 'date (MDY)
arrFlInf(i) = Array(i + 1, 3)
Case Else 'General
arrFlInf(i) = Array(i + 1, 1)
End Select
Next i
Set rg = Range("A:A")
rg.TextToColumns Destination:=Range("A1"), _
ConsecutiveDelimiter:=False, _
DataType:=xlDelimited, _
Semicolon:=True, _
fieldInfo:=arrFlInf
End Sub
如果您不需要日期格式为 "MDY" 类型,则必须将其更改为以下类别之一:4 = DMY、5 = YMD、6 = MYD、7 = DYM 和8 = YDM.
我对 VBA 脚本编写还很陌生,但我必须执行以下操作:
- 将 csv 文件转换为 xls 文件
- 在保存的xls文件中执行以下操作: 1. To 运行 Text To Columns 为数据 2. 定义每列的类型(金额、日期、文本)。 3. 使金额和日期列中的前 0 可见(例如“04521.6823”和日期“05/02/2020”)。在这里我打算使用 .NumberFormat 选项。
我成功转换文件,但无法执行 Text2Column 部分。 我的数据只在A列,分隔符“;”,只在sheet1上。 这是我最新的代码 运行:
Sub text2columns()
Dim rg As Range
Set rg = Range("A:A").CurrentRegion
rg.TextToColumns Destination:=Range("A:A"), ConsecutiveDelimiter:=True, DataType:=xlDelimited, Space:=True
End Sub
谁能帮帮我?我知道问题很基本,但需要一些帮助才能继续。 谢谢!
您提到了目的地:=范围("A:A")。 此外,您的输入和输出范围不能相同。 我想,它不应该是一列,只是一个单元格
请检查 Destination:=Range("B1") 是否有效。
格式样式 ~> 1:制表符,2:逗号,3:space,4:semiclone,5:None,6:User的字母
Sub TransToXLSFromCSV()
Dim vFile As Variant
Dim vDB
Dim fn As String
Dim strPath As String
Dim i As Long
Dim Wb As Workbook
strPath = ThisWorkbook.Path
vFile = Application.GetOpenFilename("Select Text Files *.txt,*.txt;*.csv", _
Title:="Select Text Files!", MultiSelect:=True)
If TypeName(vFile) = "Boolean" Then Exit Sub
Application.ScreenUpdating = False
For i = 1 To UBound(vFile)
fn = Dir(vFile(i))
fn = Left(fn, Len(fn) - 4)
Set Wb = Workbooks.Open(Filename:=vFile(i), Format:=2) '<~~ Foramt style comma
vDB = Wb.ActiveSheet.UsedRange
Wb.Close
Set Wb = Workbooks.Add
With Wb
.ActiveSheet.Range("a1").Resize(UBound(vDB, 1), UBound(vDB, 2)) = vDB
.SaveAs Filename:=strPath & "\" & fn & ".xlsx"
.Close (0)
End With
Next i
Application.ScreenUpdating = True
End Sub
请试试这个代码:
Sub text2columns()
Dim rg As Range, arrFlInf(19) As Variant, i As Long
For i = 0 To UBound(arrFlInf)
Select Case i
Case 1 - 8, 10 'Text
arrFlInf(i) = Array(i + 1, 2)
Case 12 - 15, 18 'date (MDY)
arrFlInf(i) = Array(i + 1, 3)
Case Else 'General
arrFlInf(i) = Array(i + 1, 1)
End Select
Next i
Set rg = Range("A:A")
rg.TextToColumns Destination:=Range("A1"), _
ConsecutiveDelimiter:=False, _
DataType:=xlDelimited, _
Semicolon:=True, _
fieldInfo:=arrFlInf
End Sub
如果您不需要日期格式为 "MDY" 类型,则必须将其更改为以下类别之一:4 = DMY、5 = YMD、6 = MYD、7 = DYM 和8 = YDM.