Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将(错误的)CSV数据导入Excel_Excel_Vba_Csv - Fatal编程技术网

将(错误的)CSV数据导入Excel

将(错误的)CSV数据导入Excel,excel,vba,csv,Excel,Vba,Csv,我正在尝试将一些(坏的)CSV数据导入Excel。 我称之为“坏”,因为它在某些单元格中硬编码输入,而在其他单元格中包含格式为文本的数字(带有我需要的前缀0) 我创建了两个ImportMacro: Sub LoadSheetCSV(fromsheet As String, sheetname As String) 'Load sheet fromfile = DownDatafiles & "\" & fromsheet & ".c

我正在尝试将一些(坏的)CSV数据导入Excel。 我称之为“坏”,因为它在某些单元格中硬编码输入,而在其他单元格中包含格式为文本的数字(带有我需要的前缀0)

我创建了两个ImportMacro:

Sub LoadSheetCSV(fromsheet As String, sheetname As String)    

'Load sheet
fromfile = DownDatafiles & "\" & fromsheet & ".csv"

Sheets.Add After:=ActiveSheet
ActiveSheet.Name = sheetname
Application.CutCopyMode = False     
 
 
Set wb = Workbooks.Open(filename:=fromfile, Local:=True)

aData = wb.Worksheets(1).UsedRange.Value
lRows = UBound(aData, 1)
lCols = UBound(aData, 2)

ThisWorkbook.Activate
Sheets(sheetname).Activate

With ActiveSheet
 .Range(.Cells(1, 1), .Cells(lRows, lCols)).Value = aData
End With

wb.Close        
     
End Sub
不幸的是,这一个从数字中删除了前缀零

下一个保持前缀为零,但当它点击硬编码输入时,将保留空白行:

Sub LoadSheetCSV_ALT(fromsheet As String, sheetname As String, progresstxt As String)

Dim ws As Worksheet
Dim colDataTypesArr(1 To 10000) As Long
Dim i As Long    
   
'Load sheet
fromfile = DownDatafiles & "\" & fromsheet & ".csv"

Sheets.Add After:=ActiveSheet
ActiveSheet.Name = sheetname
Application.CutCopyMode = False


Set ws = ActiveSheet
For i = 1 To UBound(colDataTypesArr)
    colDataTypesArr(i) = 2
Next i

With ws.QueryTables.Add(Connection:="TEXT;" & fromfile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileSemicolonDelimiter = True
     .TextFileTextQualifier = xlTextQualifierDoubleQuote
     .TextFileColumnDataTypes = colDataTypesArr
     .TextFilePlatform = 65001
     .Refresh
End With

End sub
知道如何将两个解决方案合并为一个好的解决方案吗?:-)


谢谢

CSV文件不像Excel工作表那样具有单元格。请提供一些示例数据。如果使用PowerQuery(data>>From Text/csv),这样的文件应该可以正常加载-它允许您将包含前导零的列设置为文本,并在“单元格”中保留换行符,只要这些值在文件中引用即可。