[英]How can I export from Excel file to a csv file, where the file has leading zeros, in text format?
我有這個代碼:
Sub GravarArquivoCSV()
Open Range("E1").Value For Output As 1
Sheets("APR_CSV").Activate
Range("A1").Select
Do While ActiveCell.Text <> ""
Print #1, ActiveCell.Value & ";" & Cells(ActiveCell.Row, 2).Value & ";" & Cells(ActiveCell.Row, 3).Value & ";" & Cells(ActiveCell.Row, 4).Value
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
Loop
MsgBox "Arquivo gerado com sucesso!", vbInformation, "OK"
Close 1
Sheets("Autoline Controlo Compras").Activate
End Sub
但是所有信息在生成的輸出 csv 中都沒有左零:
故意的:
62013227 001148160R 1 41563 M02-UL-98 62013227 8200212598 2 42426 M25-BI-26 62013227 0000066444 1 42490 C19-RA-68 62013227 8200725845 1 43858 BJ1 0028 11485 62013227 7701475837 1 43858 BJ1 0028 11485 62013227 0000474796 1 43858 BJ1 0028 11485 62013227 8200661217 2 43858 BJ1 0028 11485
CSV 導出:沒有需要的左零 000
62013227 001148160R 1 41563 M02-UL-98 62013227 8200212598 2 42426 M25-BI-26 62013227 66444 1 42490 C19-RA-68 62013227 8200725845 1 43858 BJ1 0028 11485 62013227 7701475837 1 43858 BJ1 0028 11485 62013227 474796 1 43858 BJ1 0028 11485 62013227 8200661217 2 43858 BJ1 0028 11485
我怎么能有前導零?
如果您需要前導零,那么Format應該會有所幫助。
您還應該避免選擇或激活任何東西。
因此,我使用了一個變量“i”來遍歷所有行。
由於文件編號 1 可能已在使用中,因此最好使用FreeFile
。
Sub GravarArquivoCSV()
Dim fileNum As Long
Dim i As Long
fileNum = FreeFile
Open Range("E1").Value For Output As fileNum
With Sheets("APR_CSV")
i = 1
Do While .Cells(i, "A").Text <> ""
Print #FileNum, .Cells(i, "A").Value & ";" & _
Format(.Cells(i, "B").Value, "0000000000") & ";" & _
.Cells(i, "C").Value & ";" & _
.Cells(i, "D").Value
i = i + 1
Loop
End With
Close fileNum
MsgBox "Arquivo gerado com sucesso!", vbInformation, "OK"
Sheets("Autoline Controlo Compras").Activate
End Sub
將此 CSV 導入 Excel 時,Excel 會將數字識別為數字。
因此,您有兩個選擇:
請根據您的需要調整文件路徑和文件名。
Public Sub ImportCSV()
Dim wb As Workbook
Set wb = Application.Workbooks.Add
With wb.Worksheets(1).QueryTables.Add( _
Connection:="TEXT;" & Application.DefaultFilePath & "\APR_CSV.csv", _
Destination:=wb.Worksheets(1).Range("A1"))
.Name = "APR_CSV"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = XlCellInsertionMode.xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = XlPlatform.xlWindows
.TextFileStartRow = 1
.TextFileParseType = XlTextParsingType.xlDelimited
.TextFileTextQualifier = XlTextQualifier.xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array( _
XlColumnDataType.xlGeneralFormat, _
XlColumnDataType.xlTextFormat, _
XlColumnDataType.xlGeneralFormat, _
XlColumnDataType.xlTextFormat)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete
End With
End Sub
請使用ActiveWorkbook
(當前活動文件)或ThisWorkbook
(包含您的 VBA 代碼的文件)。 如果包含您的 VBA 代碼的文件也是活動文件,則它們是相同的。
使用其Path
,添加反斜杠“\\”並添加所需的 CSV 文件名(例如“APR CSV Renault.CSV”)。
用他的實驗:
Private Sub DebugMyPaths
' always the file with THIS VBA code:
Debug.Print ThisWorkbook.Path & "\" & ThisWorkbook.Name
Debug.Print ThisWorkbook.FullName
' always the active Excel file:
Debug.Print ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
Debug.Print ActiveWorkbook.FullName
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.