Beste experts, ik heb een macro gemaakt om data te importeren. Aangevuld met een sub om een regel te verwijderen. Ik heb een paar vragen hierover:
1. De macro is niet stabiel. Hij doet het diverse keren goed. Dan sla ik het bestand met de aangevulde data op. En dan blijft ie hangen op .Refresh BackgroundQuery:=False. Nu doet de macro het overigens weer goed. Helaas weet ik nu de melding niet goed meer. Het had meen ik te maken met het bron bestand.
Waar zou dit aan kunnen liggen?
2. Een property is FieldNames = False Als ik het goed begrijp komt dan niet de regel mee met alle kolomkoppen. Dat gebeurt wel. Ik heb er zelfs een twee de sub voor gevonden (del_row) om de regel te verwijderen. Het lukt me om geen kolomkoppen te importeren wanneer ik de regel .TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1, 1, 1, 1) uitschakel. Maar dan is mijn kolom met datums onleesbaar (##########) terwijl er bijvoorbeeld 20180525 in staat. De del_row sub werkt, maar het moet toch eenvoudiger kunnen?
Bedankt voor de suggesties!
1. De macro is niet stabiel. Hij doet het diverse keren goed. Dan sla ik het bestand met de aangevulde data op. En dan blijft ie hangen op .Refresh BackgroundQuery:=False. Nu doet de macro het overigens weer goed. Helaas weet ik nu de melding niet goed meer. Het had meen ik te maken met het bron bestand.
Waar zou dit aan kunnen liggen?
2. Een property is FieldNames = False Als ik het goed begrijp komt dan niet de regel mee met alle kolomkoppen. Dat gebeurt wel. Ik heb er zelfs een twee de sub voor gevonden (del_row) om de regel te verwijderen. Het lukt me om geen kolomkoppen te importeren wanneer ik de regel .TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1, 1, 1, 1) uitschakel. Maar dan is mijn kolom met datums onleesbaar (##########) terwijl er bijvoorbeeld 20180525 in staat. De del_row sub werkt, maar het moet toch eenvoudiger kunnen?
Bedankt voor de suggesties!
Code:
Sub ING_import()
'
' Importeer ING data Macro
'
Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;/Users/mijnnaam/Downloads/data.csv", Destination:=Range("C" & Rows.Count).End(xlUp).Offset(1))
.Name = "data_1"
.FieldNames = False
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.RefreshPeriod = False
.TextFilePromptOnRefresh = False
.TextFilePlatform = 10000
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
del_row
End Sub
Sub del_row()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
'We use the ActiveSheet but you can replace this with
'Sheets("MySheet")if you want
With ActiveSheet
'We select the sheet so we can change the window view
.Select
'If you are in Page Break Preview Or Page Layout view go
'back to normal view, we do this for speed
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
'Turn off Page Breaks, we do this for speed
.DisplayPageBreaks = False
'Set the first and last row to loop through
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'We loop from Lastrow to Firstrow (bottom to top)
For Lrow = Lastrow To Firstrow Step -1
'We check the values in the A column in this example
With .Cells(Lrow, "I")
If Not IsError(.Value) Then
If .Value = "Bedrag (EUR)" Then .EntireRow.Delete
'This will delete each row with the Value "Bedrag (EUR)"
'in Column A, case sensitive.
End If
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub