• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

VBA import pliku .csv a cudzysłowie

Object Storage Arubacloud
0 głosów
1,526 wizyt
pytanie zadane 26 czerwca 2018 w Visual Basic przez niezalogowany

Witam, stworzyłem w VBA kod, dzięki któremu mogę importować pliki .csv, wszystko działa dobrze, po za tym, że nie raz w pliku .csv występują wyjątki, np. nazwa zawarta w pliku jest w cudzysłowie, przez to przestają się przepisywać kolejne wiersze, jakieś pomysły jak to obejść ?

Poniżej kod

Sub Macro1()
'
' Macro1 Macro
'
' Open GetOpenFilename with the file filters.
fname = Application.GetOpenFilename(FileFilter:="csv Files (*.csv), *.csv", Title:="Select a file or files", MultiSelect:=False)
 
'and put that in a loop statement around your import csv macro.
'So just change the hard-coded csv part in your recorded macro for importing CSV's to fname and job done
'This is my hard-coded macro for a random .csv
 
FileNameAlone = Right(Left(fname, Len(fname) - 4), (Len(fname) - 4) - (InStrRev(fname, "\", -1)))
 
'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & fname, Destination:=Range( _
"$A$6"))
.Name = FileNameAlone
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
 
With Sheets("Arkusz2").Range("$C$3")
.Value = Now()
.NumberFormat = "dd/mm/yyyy"
End With
 
Dim i As Integer, ostw As Integer
ostw = Sheets("Arkusz1").Cells(Rows.Count, "A").End(xlUp).Row
For i = 7 To ostw
    Sheets("Arkusz2").Cells(i, "A").Value = i - 6
    Sheets("Arkusz2").Cells(i, "B").Value = Sheets("Arkusz1").Cells(i, "A").Text
    Sheets("Arkusz2").Cells(i, "C").Value = Sheets("Arkusz1").Cells(i, "C").Text & Chr(10) & Sheets("Arkusz1").Cells(i, "D").Text & Chr(10) & Sheets("Arkusz1").Cells(i, "E").Text
    Sheets("Arkusz2").Cells(i, "D").Value = Sheets("Arkusz1").Cells(i, "G").Text
    Sheets("Arkusz2").Cells(i, "A").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "B").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "C").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "D").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "E").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "F").Borders.LineStyle = xlContinuous
    Sheets("Arkusz2").Cells(i, "G").Borders.LineStyle = xlContinuous
     
Next i
 
End Sub

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 2,211 wizyt
pytanie zadane 23 maja 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
0 odpowiedzi 1,353 wizyt
pytanie zadane 1 lutego 2018 w PHP przez hiper007 Stary wyjadacz (11,270 p.)
0 głosów
0 odpowiedzi 1,020 wizyt
pytanie zadane 6 sierpnia 2018 w Visual Basic przez SUNBIN Obywatel (1,190 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...