• 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

0 głosów
179 wizyt
pytanie zadane 26 czerwca 2018 w Visual Basic przez Paragon94 Użytkownik (690 p.)

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 214 wizyt
pytanie zadane 23 maja 2018 w SQL, bazy danych przez hiper007 Stary wyjadacz (10,860 p.)
0 głosów
0 odpowiedzi 456 wizyt
pytanie zadane 1 lutego 2018 w PHP, Symfony, Zend przez hiper007 Stary wyjadacz (10,860 p.)
0 głosów
0 odpowiedzi 91 wizyt
pytanie zadane 6 sierpnia 2018 w Visual Basic przez SUNBIN Obywatel (1,190 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

64,048 zapytań

110,437 odpowiedzi

231,288 komentarzy

47,817 pasjonatów

Przeglądających: 192
Pasjonatów: 5 Gości: 187

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...