Excel 从csv文件导入某些列
我正在尝试将csv文件和特定列导入excel,然后根据特定列拆分数据 我对VBA编程有点陌生,只懂基本编程,不幸的是,我尝试的代码没有达到预期的效果 我包含了要导入excel的csv文件的链接: 或截图: 此文件是从会计软件导出的库存列表。我们需要尝试对此列表进行排序,以便盘点,需要将以下内容调整为csv文件:Excel 从csv文件导入某些列,excel,vba,csv,split,Excel,Vba,Csv,Split,我正在尝试将csv文件和特定列导入excel,然后根据特定列拆分数据 我对VBA编程有点陌生,只懂基本编程,不幸的是,我尝试的代码没有达到预期的效果 我包含了要导入excel的csv文件的链接: 或截图: 此文件是从会计软件导出的库存列表。我们需要尝试对此列表进行排序,以便盘点,需要将以下内容调整为csv文件: 该文件需要导入excel,并且只需要导入某些列,这些列是 A列:代码 B栏:说明 C栏:类别 AA列:文本用户字段1(在会计软件中它是仓位号,这很重要,因为盘点通常根据零件的仓位号进行
如果有人能帮助我进行VBA编程,我将不胜感激。请不要包含指向包含宏的文件的外部链接,因为这可能会很危险。您好,不,此文件没有任何宏,它只是一个csv文件。最好包含相关信息(至少是其中的一部分)或者问题本身的数据截图。大多数人都会犹豫是否要下载任何东西来帮助你。好吧,我会尝试截图,但这是一个指向google drive的链接。虽然可以安全地查看它,但不需要下载,因为截图是问题中的描述(“导入项目按钮:导入表2中的excel文件”)非常无用…请不要包含指向文件中包含宏的外部链接,因为这可能很危险。嗨,不,此文件没有任何宏。它只是一个csv文件。最好在问题本身中包含相关信息(至少部分)或数据的屏幕截图。大多数人都会犹豫是否要下载任何东西来帮助你。好吧,我会尝试截图,但这是一个指向google drive的链接。虽然可以安全地查看它,但不需要下载,因为截图是问题中的描述(“导入项目按钮:导入表2中的excel文件”)非常感谢,请允许我问一下代码的每一部分都在做什么,我只是想学习和理解代码命令文件做什么。非常感谢,非常感谢,请允许我问一下代码的每一部分都在做什么,我只是想学习和理解代码命令文件做什么。我非常感激
Sub CsvFile_Read()
Dim vR(), vDB
Dim WbCSV As Workbook, Wb As Workbook
Dim Ws As Worksheet
Dim i As Long, n As Integer
Dim vFile As Variant
Application.ScreenUpdating = False
Set Wb = ThisWorkbook
Set Ws = Wb.Sheets(2)
'Select a text file through the file dialog.
'Get the path and file name of the selected file to the variable.
vFile = Application.GetOpenFilename("ExcelFile *.txt,*.txt;*.csv", _
Title:="Select CSV file", MultiSelect:=False)
'If you don't select file, exit sub.
If TypeName(vFile) = "Boolean" Then Exit Sub
'The selected text file is imported into an Excel file. format:2 is csv, format:1 is tab
Set WbCSV = Workbooks.Open(Filename:=vFile, Format:=2)
'Bring all the contents of the sheet into an array.
With WbCSV.Sheets(1)
vDB = .UsedRange
For i = 1 To UBound(vDB, 1)
'AA column = 27, AP column = 42
If vDB(i, 27) = "SO0000" And vDB(i, 42) = 0 Then
Else
'Get the contents corresponding to the dynamic array. Bring the matrix to the inverted state.
n = n + 1
ReDim Preserve vR(1 To 5, 1 To n)
vR(1, n) = vDB(i, 1)
vR(2, n) = vDB(i, 2)
vR(3, n) = vDB(i, 3)
vR(4, n) = vDB(i, 27)
vR(5, n) = vDB(i, 42)
End If
Next i
End With
'Colse the text file
WbCSV.Close (0)
'The dynamic array is recorded in sheet2.Bring the row to the inverted state.
With Ws
.UsedRange.Clear
.Range("a1").Resize(n, 5).Value = WorksheetFunction.Transpose(vR)
End With
Application.ScreenUpdating = True
End Sub