• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro om .csv bestanden te importeren

Status
Niet open voor verdere reacties.

Gielekes

Gebruiker
Lid geworden
4 sep 2017
Berichten
74
Ik ben aan het proberen om een code te schrijven om een macro te schrijven. Met deze code moet ik een willekeurig csv bestand kunnen openen en dan moet dit omgezet worden in tabellen op blad1.
Het volgende stukje code heb ik al kunnen vinden maar het implementeren lukt mij niet. De onderstaande code heb ik grotendeels op het internet gevonden. Nu als ik de code uitvoer krijg ik de volgende melding daarbij ook nog te zien: het subscript valt buiten het bereik.


Sub load_csv()
Dim fStr As String

With Application.FileDialog(msoFileDialogFilePicker)
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Cancel Selected"
Exit Sub
End If
'fStr is the file path and name of the file you selected.
fStr = .SelectedItems(1)
End With

With ThisWorkbook.Sheets("Data").QueryTables.Add(Connection:= _
"TEXT;" & fStr, Destination:=Range("$A$1"))
.Name = 'GEEN IDEE WAT HIER MOET KOMEN'
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False

End With
End Sub
 
Laatst bewerkt:
Inmiddels heb ik de volgende code:
Sub CSV_Import()
Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("blad1") 'set to current worksheet name

strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")
ActiveSheet.Cells.Clear
With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileTabDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True

.Refresh BackgroundQuery:=False
.Refresh
End With
ActiveSheet.UsedRange.Replace What:=".", Replacement:=","
End Sub


Echter werkt nog steeds de macro maar half. Omdat de gegevens 'amerikaans' zijn komen de komma's en de punten in de knoei. Dit moet eigenlijk net zo gaan als dat je kunt kiezen bij het importeren van een csv.
 
Laatst bewerkt:
Neem bij het importeren van een CSV bestand een macro op, dan kan je zien wat er gebeurt.

Zet tevens code die je hier plaatst tussen codetags.
 
Mijn punt is dat je met die methode geen macro nodig hebt, één keer instellen en daarna gewoon gegevens vernieuwen, bestand kiezen, klaar.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan