Vindt het nogal een omslachtige code om een 'simpel' stuk tekst in excel te kopieëren.
En ik zie dat je in de code alleen verwijst naar cel 'A1', dus is het logisch dat alle waarden daar naartoe worden geplaatst. Lijkt mij handiger om een zoekfunctie te maken die zoekt naar de eerst volgende lege cel in kolom A.
Iets als
Code:
vZoek = ""
With Worksheets(1).Range("A1:A10") 'Welk bereik zoeken.
Set a = .Find(vZoek, LookIn:=xlValues, lookat:=xlWhole) 'Zoek wat, waarin, etc.
If Not a Is Nothing Then 'Wat te doen als de cel is gevonden.
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Setings\robin.vandenhruk\Desktop\totaal.txt", _
Destination:=Range(a))
'En dan de rest van je handelingen .......
End With
Else 'Wanneer er niets is gevonden.
MsgBox "Alle cellen in het bereik zijn gevuld met een waarde." _
& vbNewLine & "Vergroot het bereik."
End If
End With
'vZoek is een variabele die gelijk is als de waarde die je zoekt.
'In dit geval een lege cel.
Probeer dit eens. Anders moet je het bestand maar even plaatsen.
Bedankt ik ben weer een stukje verder gekomen hiermee. Ik heb wel nog het probleem dat als je de macro uitvoerd hij alle data steeds erachter zet en neit eronder. Hij gaat dus gewoon van A naar B naar C naar D enz. ipv. naar 1 naar 2 naar 3 te gaan.
Het stukje van als er text in de cel staat dan msgbox vergroot bereik werkt perfect.
Dit is wat ik ervan gemaakt heb tot nu toe:
Sub lol()
vZoek = ""
With Worksheets(1).Range("A1:F1") 'Welk bereik zoeken.
Set a = .Find(vZoek, LookIn:=xlValues, lookat:=xlWhole) 'Zoek wat, waarin, etc.
If Not a Is Nothing Then 'Wat te doen als de cel is gevonden.
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\robin.vandenhurk\Desktop\totaal.txt", _
Destination:=Range("A3"))
.Name = "totaal"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = True
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(4, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Else 'Wanneer er niets is gevonden.
MsgBox "Alle cellen in het bereik zijn gevuld met een waarde." _
& vbNewLine & "Vergroot het bereik."
End If
End With
End Sub
Is er niet misschien een optie zoals die van move selection after enter. Direction: Down
Dus iets van move selection after macro Direction: down ofzoiets.