Marco Excel

Status
Niet open voor verdere reacties.

Deadcops

Gebruiker
Lid geworden
8 feb 2008
Berichten
205
Hallo,

Ik heb een macro die van een ander bestand de text inporteerd naar Excel.
Dat werkt ook maar als ik de macro nog een keer uitvoer zet hij de data achter de vorige data.

Is het ook mogelijk om te zorgen dat de data onder het oude komt en dus niet meer erachter.

Alvast bedankt
 
Hallo,

Ik heb een macro die van een ander bestand de text inporteerd naar Excel.
Dat werkt ook maar als ik de macro nog een keer uitvoer zet hij de data achter de vorige data.

Is het ook mogelijk om te zorgen dat de data onder het oude komt en dus niet meer erachter.

Alvast bedankt

Heb je ook even de code van wat je nu hebt ? Kan ik even kijken.
 
Wat bedoel je juist met:
eronder : in dezelfde cel als de eesrste keer als een tweede lijn of onder de eerste cel, dus in rij 10 als de vorige keer 9 gebruikt werd?
 
Ik bedoel de cel eronder. Dus als het eerst in cel A1 + B1 komt te staan dat het daarna in cel A2 + B2 te staan komt enz.
_________________________________________________________________________
Ik moet wel even erbij zeggen dat ik niks van marco's af weet. Ik heb er nog nooit mee gewerkt. Dus als er een stuk code geplaatst wordt kan er dan een beetje uitleg bij komen te staan wat het allemaal doet, want ik wil er toch wat van leren.:)
Wat ik nu heb ik gewoon simpel dit:
_________________________________________________________________________
Sub Macro1()
'
' Macro1 Macro
' Macro recorded 15-4-2008 by robin.vandenhurk
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Documents and Settings\robin.vandenhurk\Desktop\totaal.txt", _
Destination:=Range("A1"))
.Name = "totaal"
.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 = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(4, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
_________________________________________________________________________

Wat ik dus in deze Macro gedaan heb ik:
Data => Import external data => Import Data =>Dan het *.txt bestandje gekozen waarvan ik de tekst wil importeren. En de wizard gewoon doorgelopen. (EINDE)
_________________________________________________________________________
 
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.
 
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.
 
Je moet ook niet aangeven 'Destination:=Range("A3")'

maar:
Code:
Destination:=Range(a)

Die 'a' is het celbereik van lege cel in kolom A (oftewel de eerste lege cel in het bereik A1:A10).

Werkt het dan wel ?
 
Je moet ook niet aangeven 'Destination:=Range("A3")'

maar:
Code:
Destination:=Range(a)

Die 'a' is het celbereik van lege cel in kolom A (oftewel de eerste lege cel in het bereik A1:A10).

Werkt het dan wel ?

Ik heb de volgende dingen geprobeert:
Destination:=Range(A)
Maar dan klopt de code niet en dan doet hij het dus niet.

Destination:=Range(A1:A10)
Hij blijft de tekst toch gewoon erachter plakken.

Destination:=Range(A1, A10)
Hij blijft de tekst toch gewoon erachter plakken.
 
Laatst bewerkt door een moderator:
Hoe plaats je dan een bestand zonder deze op een andere site online te moeten zetten?
 
Laatst bewerkt:
Hoe plaats je dan een bestand zonder deze op een andere site online te moeten zetten?

Snap je vraag niet ????
tis als het goed is een excel-bestand met een txt.bestand.
Gewoon even inpakken (Zip of Rar) en uploaden hiernaartoe. (zie paperclip bij het maken van je bericht).
 
Dit is het excel blad met de text die ik vanuit kladblok wil laten kopieeren.
De excel is maar een voorbeeld van wat ik wil hebben want ik wil de excel pas verder uitwerken als ik de macro goed heb.

Ook ben ik erachter gekomen dat de macro de tekst niet achter de eerder gemaakte tekst zet maar ervoor. De tekst die er al staat schijft dus gewoon op naar rechts toe.
Dit heb ik ook nog gevonden. Maar nog niet voor een kolomen alleen voor rijen.

xlInsertDeleteCells: Partial rows are inserted or deleted to match the exact number of rows required for the new recordset.
xlInsertEntireRows: Entire rows are inserted, if necessary, to accommodate any overflow. No cells or rows are deleted from the worksheet.
xlOverwriteCells: No new cells or rows are added to the worksheet. Data in surrounding cells is overwritten to accommodate any overflow
 

Bijlagen

Laatst bewerkt:
Probeer onderstaande code eens:

Code:
Sub Test()
vZoek = ""

With Worksheets(1).Range("A1:A10")  'Welk bereik zoeken.
    Set A = .Find(vZoek, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext) 'Zoek wat, waarin, etc.
    If Not A Is Nothing Then    'Wat te doen als de cel is gevonden.
        A = A.Address   'Geeft het celadres (vb: "A1") van de gevonden cel
      With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Documents and Settings\robin.vandenhurk\Desktop\totaal.txt", _
        Destination:=Range(A))  'Invoegen vanaf cel ...
        
        .Name = "totaal[1]"
        .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

Je fout zat bij:
With worksheets(1).range("A1 , A10") in plaats van Witch worksheets(1).range("A1:A10")

Tevens moest: A = A.address toegevoegd worden om Destination:=Range(A) te kunnen toe te passen
 
Laatst bewerkt:
Bedankt

Bedankt volgens mij heb ik het nu.
Maandag kan ik dit pas echt goed testen maar wat ik nu getest heb werkt!

Dit is uitendelijk de macro geworden.

Sub Test()
vZoek = ""

With Worksheets(1).Range("A1:A10000") 'Welk bereik zoeken.
Set A = .Find(vZoek, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlNext) 'Zoek wat, waarin, etc.
If Not A Is Nothing Then 'Wat te doen als de cel is gevonden.
A = A.Address 'Geeft het celadres (vb: "A1") van de gevonden cel
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;F:\totaal.txt", _
Destination:=Range(A)) 'Invoegen vanaf cel ...
.Name = "totaal_127"
.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


Bedankt voor jullie hulp en de goede uitleg!
 
Site VBA scripting

Nog een vraagje. Is er misschien een site waar je VBA scripting online kan leren?
Want ik weet wel sites waar je VB scripting kan leren en HTML enz. maar geen voor VBA.
 
Nog een vraagje. Is er misschien een site waar je VBA scripting online kan leren?
Want ik weet wel sites waar je VB scripting kan leren en HTML enz. maar geen voor VBA.

Als je die hebt, hoor ik het ook graag.
Heb e.e.a. zelf met vallen en opstaan geleerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan