• 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.

Data Copy via excel naar ander bestand

Status
Niet open voor verdere reacties.

rob06052014

Gebruiker
Lid geworden
5 mei 2014
Berichten
48
Ik maak gebruik van de volgende excel vba code:

Code:
'Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Blad2").Range("A" & Rows.Count).End(xlUp).Offset(1)
Code:
Sheets("Blad1").Cells(i, "A").Copy Destination:=Workbooks("H:\test\Map2.xls").Sheets("Blad1").Range("A" & Rows.Count).End(xlUp).Offset(1)


De eerste rij werkt als ik de data na een ander werkblad wil kopieren, in hetzelfde bestand.
Het werkt niet als ik ik dezelfde data na een tweede bestand wil wegschrijven (Map2.xls) via de tweede regel.
Zou iemand willen kijken waar dit aan zou kunnen leggen? Het gaat om de code in de tweede regel, de data moet terecht komen op blad1 van het bestand Map2.xls
Zou de code moeten werken in regel 2, of moet deze anders worden? De data wordt in ieder geval zo niet gekopieerd.
Gebruik ik de eerste regel(zonder ' uiteraard) dan komt de data wel op blad 2 terecht van het bron bestand, maar wil de data juist graag weg hebben geschreven naar het andere bestand(Map2).
Dit bestand staat in de directory H:\test
Ik hoop dat iemand me verder kan helpen. Bij voorbaat dank
 
Laatst bewerkt door een moderator:
Misschien simpele vraag, maar staat dat bestand wel open dan?
 
Krijg je een foutmelding of gebeurt er gewoon niets? De code is namelijk in principe correct (aangenomen geen spelfouten e.d.) en is in principe niets mis mee, maar mogelijk wordt het workbook niet gevonden als je het volledige pad mee opgeeft
 
In dat geval wordt je workbook niet gevonden. Wat als je alleen "Map2.xls" gebruikt? Als het pad belangrijk is kun je eerst filteren op het juiste werkboek met wat extra code.

Code:
Sheets("Blad1").Cells(i, "A").Copy Destination:=Workbooks("Map2.xls").Sheets("Blad1").Range("A" & Rows.Count).End(xlUp).Offset(1)
 
Weet niet goed hoe ik via code de destination directory eerst kan selecteren.
Ik gebruik boven aan wel Workbook.Sheets("Blad1").Select voor het bronbestand, maar hoe wordt het dan voor het destination bestand(Map2), met name om dat ik daar een If Then statement gebruik, ik kan daar toch geen regel met code aankoppelen om de directory van het bronbestand(map2.xls) aan te koppelen?

Dit is de code die ik nu gebruik:

Code:
Sub test2()



Dim i, LastRow

LastRow = Sheets("Blad1").Range("A" & Rows.Count).End(xlUp).Row

Workbook.Sheets("Blad1").Select


For i = 2 To LastRow

If (Sheets("Blad1").Cells(i, "A").Value = 467 And Sheets("Blad1").Cells(i, "G").Value = (2)) Then
'Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Sheets("Blad2").Range("A" & Rows.Count).End(xlUp).Offset(1)
Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Workbooks("H:\test\Map2.xls").Sheets("Blad2").Range("A" & Rows.Count).End(xlUp).Offset(1)
'Sheets("Blad1").Cells(i, "B").Copy Destination:=Sheets("Blad2").Range("B" & Rows.Count).End(xlUp).Offset(1)

End If

Next

End Sub
 
Wanneer ik overigens via f8 door de code loopt "werkt deze wel" , tot op het laatst de foutmedling verschijnt. Er wordt overigens geen enkele data na het bestand map2 gekopieerd.
 
Maar heb je nu geprobeerd om de directory weg te laten?

Code:
Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").Range("A" & Rows.Count).End(xlUp).Offset(1)

De directory maakt namelijk geen deel uit van de naam van een workbook
 
dan volgt er een run time error 1004
Application defined or object defined error
 
Ik kan het niet reproduceren, maar de "rows.count" in het tweede deel van je code refereert naar de lokale rows.count niet die van de remote workbook.

De verandering van de error geeft in ieder geval aan dat de target nu gevonden wordt. Gebeurt er wat als je de code wat vereenvoudigt?

Code:
Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").[a1]

Dit doet niet wat je wil, maar als het goed is krijg je nu in ieder geval wat te zien.
 
Ja er wordt in ieder geval iets weggeschreven, naar het bestand.
Het betreft de laatste regel van de reeks die ik zou verwachten.
Het resultaat zou 10 rijen moeten zijn, maar op dit moment wordt alleen de laatse regel weggeschreven.
Het doelbestand bereiken gaat ieder geval idd goed nu.
 
Dat vermoedde ik al. Het is waarschijnlijk dit deel:

Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").Range("A" & Rows.Count).End(xlUp).Offset(1)

Die rows.count is in de verkeerde context. mogelijk werkt dit wel (kan nu even niet testen):
Code:
Sheets("Blad1").Cells(i, "A").EntireRow.Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").[a60000].End(xlUp).Offset(1)
 
het resultaat is wel goed:-)
alleen zou het mooi zijn als ik de code nog een keer draai dat de data ook onder de data terecht komt die er nu staat, nu wordt deze overschreven.
valt dat misschien nog te realiseren?
 
Eh, dat hoort niet zo te gaan, tenzij kolom [A] leeg is. Ik kan het in ieder geval niet reproduceren. Als ik meerdere keren draai wordt alles netjes onder elkaar geplaatst. Je doet niet toevallig ergens een "clear" of delete of iets dergelijks?
 
je hebt gelijk, net nog eens getest, en het komt keurig onderelkaar te staan.
veel dank voor je hulp.
ik wil alleen nog nog iets proberen met het vervangen van entirerow in de code.
Als nu aan de voorwaarde wordt voldaan wordt de complete rij naar het bestand gekopieerd. Stel ik wil dat alleen de waarden in kolom C D en F worden gekopieerd naar de andere file(map2.xls) i.p.v de totale rij.
Maar moet ik even tijd voor vinden om het uit te testen.
 
De volgende code lijkt voorlopig aardig te werken:


Code:
Sheets("Blad1").Cells(i, "A").Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").[a60000].End(xlUp).Offset(1)
Sheets("Blad1").Cells(i, "C").Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").[M60000].End(xlUp).Offset(1)
Sheets("Blad1").Cells(i, "E").Copy Destination:=Workbooks("Map2.xls").Sheets("Blad2").[e60000].End(xlUp).Offset(1)
 
Laatst bewerkt door een moderator:
Mag ik nog een aanvullende vraag stellen over de code? Ik heb de value waarde 467 vervangen door een inputbox , dan tik ik dus de waarde in, maar de inputbox blijft dan staan, en de muis blijft in beweging. Via heel veel escape kom ik dan uiteindelijk weer terug in de vba code?
Waarom werkt inputbox niet in de code? Anders moet ik de waarde telkens aan passen in de code vandaar dat ik graag inputbox zou gebruiken, maar de code loopt dan blijkbaar niet door. Wat doe ik fout?




Code:
If (Sheets("Blad1").Cells(i, "A").Value = InputBox("accountnummer ?") And Sheets("Blad1").Cells(i, "G").Value = (2)) Then
 
Je vraagt nu telkens een nieuwe inputbox. Ik neem aan dat je 1 keer een inputbox wil en die dan overal toepassen?
 
Ja ik zie ook maar 1 keer 467 staan..dus ik dacht ik zet daar een inputbox maar dat werkt dus niet
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan