Я новичок в VBA, и я пытаюсь создать кнопку, чтобы открыть файл CSV с точкой с запятой и сохранить его на листе «Данные». Однако, несмотря на то, что я устанавливаю разделители, вывод все равно будет таким:
Tempo;Deslocamento;Carga(s);(mm);(N)
0,00000;"-4 99846";"-28 53779"
0,01000;"-4 98967";"-28 41018"
0,02000;"-4 97449";"-28 29775"
0,03000;"-4 95374";"-28 23815"
0,04000;"-4 92851";"-28 20709"
0,05000;"-4 89975";"-28 12254"
0,06000;"-4 86842";"-27 99132"
0,07000;"-4 83488";"-26 16241"
0,08000;"-4 79954";"-20 51597"
0,09000;"-4 76271";"-10 26401"
0,10000;"-4 72469";"5 76869"
0,11000;"-4 68570";"30 21154"
0,12000;"-4 64606";"51 30509"
0,13000;"-4 60600";"62 65891"
0,14000;"-4 56565";"66 18559"
0,15000;"-4 52529";"65 00101"
0,16000;"-4 48475";"61 91677"
Ниже мой код:
'turn off screen updating
Application.ScreenUpdating = False
'initialize variables
Dim NewWorkbook As Variant
Dim AnalysisWorkbook As Variant
Dim OpenWorkbook As Variant
'current filename
AnalysisWorkbook = ActiveWorkbook.Name
'ask the user for the file name to open
NewWorkbook = Application.GetOpenFilename("CSV (*.csv), *.csv")
'check for cancel button
If NewWorkbook = False Then Exit Sub
'open the text file with the OpenText method
Workbooks.OpenText Filename:=NewWorkbook, Origin:=xlWindows, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlTextQualifierDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=True, Comma:=False, Space:=False, Other:=False, OtherChar:=False, _
FieldInfo:=Array(1, 1), DecimalSeparator:=",", ThousandsSeparator:="."
OpenWorkbook = ActiveWorkbook.Name
'copy data
Windows(OpenWorkbook).Activate
Columns("A:H").Select
Selection.Copy
'paste data
Workbooks(AnalysisWorkbook).Worksheets("Data").Activate
Columns("A:H").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'close data file
Workbooks(OpenWorkbook).Activate
Range("A1").Select
Selection.Copy
Workbooks(OpenWorkbook).Close SaveChanges:=False
'turn on screen updating
Application.ScreenUpdating = True
Я скопировал этот код из другой программы, которую использую здесь, которая открывает файлы .txt, и попытался изменить. Но, похоже, я что-то упускаю.
1 ответ
Допустим, мы открываем файл и пытаемся разобрать его «вручную»:
Sub parser()
Close #1
s = "C:\TestFolder\matheus.csv"
Open s For Input As #1
j = 1
Do While Not EOF(1)
Line Input #1, TextLine
ary = Split(TextLine, ";")
i = 1
For Each a In ary
Cells(j, i).Value = a
i = i + 1
Next a
j = j + 1
Loop
Close #1
End Sub
Приведенный выше код получает данные построчно и использует "; " в качестве разделителя. это приводит к:
Обратите внимание, что это удается только частично. Кажется, что поле мм и поле N объединены.
Похожие вопросы
Связанные вопросы
Новые вопросы
vba
Visual Basic для приложений (VBA) — это управляемый событиями объектно-ориентированный язык программирования для написания макросов, используемый для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос конкретно касается программирования какого-либо приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook], [visio] или [ms-project].