【发布时间】:2018-02-23 07:49:13
【问题描述】:
我通过
导入一个 .csv 文件Sub Datei_Importieren()
Dim strFileName As String, arrDaten, arrTmp, lngR As Long, lngLast As Long
Const cstrDelim As String = VBA.Constants.vbTab 'Trennzeichen
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Title = "Datei wählen"
.InitialFileName = "C:\Test\*.csv" 'Pfad anpassen
.Filters.Add "CSV-Dateien", "*.csv", 1
If .Show = -1 Then
strFileName = .SelectedItems(1)
End If
End With
If strFileName <> "" Then
Application.ScreenUpdating = False
Open strFileName For Input As #1
arrDaten = Split(Input(LOF(1), 1), vbCrLf)
Close #1
For lngR = 1 To UBound(arrDaten)
arrTmp = Split(arrDaten(lngR), cstrDelim)
If UBound(arrTmp) > -1 Then
With ActiveSheet
lngLast = .Cells(Rows.Count, 1).End(xlUp).Row + 1
lngLast = Application.Max(lngLast, 10)
.Cells(lngLast, 1).Resize(, UBound(arrTmp) + 1) _
= Application.Transpose(Application.Transpose(arrTmp))
End With
End If
Next lngR
End If
End Sub
该功能完美运行,但我想将 D 列设置为文本,但找不到参数。有谁能帮帮我吗?
【问题讨论】:
-
.Range("D1:D" & lngLast).NumberFormat = "@" -
您是否总是希望它显示 3 位数字?如果是这样,请使用
="000" -
试试
="###"或="##0" -
我只记得您可以像手动操作一样通过 vba 导入为 CSV。这可能是更好的方法,因为您可以直接在其中定义数据类型。获得它的一种简单方法是记录自己手动执行的宏(然后根据需要进行调整)。