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

Selectie kopiëren tussen 2 bestanden

Status
Niet open voor verdere reacties.

slottieboom

Gebruiker
Lid geworden
3 okt 2012
Berichten
33
Hallo,

Ik zou graag op in bestand Sjaboon.xlsm een selectie maken (A1 tot E10) van het blad Export, en dat kopiëren naar de eerste lege rij in bestand Overzicht.xslx. Tot nu ben ik met veel zoeken gekomen tot:

Code:
Sub Exporteren()

Workbooks.Open Filename:="F:\Data\Overzicht.xlsx"

Set c = Workbooks("Overzicht.xlsx").Sheets("Erik")
Set d = Workbooks("Sjabloon.xlsm").Sheets("Export")

Dim LastRow
Dim NewRow

LastRow = c.Range("A65536").End(xlUp).row
NewRow = d.Range("A65536").End(xlUp).row

d.Range("A" & NewRow + 1, "E" & NewRow + 1).Value = c.Range("A" & LastRow, "E" & LastRow).Value

Workbooks("Sjabloon.xlsm").Sheets("Export").Activate

Dim GetDate
Dim MyDate
GetDate = d.Range("E65536").End(xlUp).row
MyDate = d.Range("E" & GetDate).Value

Workbooks("Overzicht.xlsx").Activate
ActiveWorkbook.Close SaveChanges:=True


End Sub

Maar dat lukt niet, ik heb geen idee wat nu wat eigenlijk doet. maar nou kopieert hij de eerste rij van overzicht naar sjabloon ;).

Is er iemand die mij daar in kan assisteren ?

Mvg Erik
 
Laatst bewerkt:
dat is het idd, soms zijn het 3 regels soms zijn het 10 regels.

PS Hoe krijg ik nou zo'n code box in mijn reply?
 
Dag slottieboom,

Bij reageren neem je geavanceerd en klik je op tags # en plak je gewoon de code zonder ertussen te klikken
 
Hallo Theophiel,

Bedankt voor je reactie, alleen betreft dit nu kopie tussen 2 sheets en niet tussen 2 werkboeken.
Hoe gebruik ik dit nu tussen 2 werkboeken?
 
Ik zal de vraag even duidelijk stellen, het was nogal rommelig.

Ik heb 2 Excel bestanden:
Sjabloon.xlsm met de sheets:Export (als in exporteren naar ander bestand), een sheet "Erik", een sheet "Marina" en een sheet met berekeningen "Data"
en Overzicht.xlsx met de sheets "Erik" en "Marina".

De gegevens in bestand Sjabloon.xlsm worden gekopieerd van sheet "Erik" naar sheet "Export". Dit zijn altijd 10 rijen maar niet altijd allemaal gevuld.
Er staat wel een formule in =ALS(A3="";"":A1) omdat A1 een datum is die wel meegenomen moet worden.
Als ik deze zou maken: A2=A1 en voor de volgende rij A3=A1 enz. dan zou A1 tot A10 altijd de datum bevatten en dus een gevulde rij zijn. (dit is niet makkelijk bij het definiëren van een gevulde rij denk ik?)
Dat gaat goed.

Echter nu zou ik de gevulde rijen van het sheet "Export" in Sjabloon.xlsm.
Willen schijven naar het bestand: Overzicht.xlsx sheet "Erik" naar de eerste lege rij.

Dit zelfde geld voor Marina alleen met een andere macro, (als ik de eerste goed heb, kopiëren en plakken met wat sheet namen aanpassen denk ik?)

Ik heb een andere macro gevonden maar ook die krijg ik niet werkend.

Code:
Sub Export()
     
      Dim wbTarget            As Workbook 'workbook where the data is to be pasted
   Dim wbThis              As Workbook 'workbook from where the data is to copied
   Dim strName             As String   'name of the source sheet/ target workbook
    
   'set to the current active workbook (the source book)
   Set wbThis = ActiveWorkbook
    
   'get the active sheetname of the book
   strName = ActiveSheet.Name
    
   'open a workbook that has same name as the sheet name
   Set wbTarget = Workbooks.Open("F:\Data\Overzicht.xlsx")
    
   'select cell A1 on the target book
   wbTarget.Range("A1").Select
    

   'activate the source book
   wbThis.Activate
    
   'clear any thing on clipboard to maximize available memory
   Application.CutCopyMode = False
    
   'copy the range from source book
   wbThis.Range("A1:E10").Copy
    
   'paste the data on the target book
   wbTarget.Range("A1").End(xlUp).Offset(1).PasteSpecial
   
    
   'clear any thing on clipboard to maximize available memory
   Application.CutCopyMode = False
    
   'save the target book
   wbTarget.Save
    
   'close the workbook
   wbTarget.Close

   'activate the source book again
   wbThis.Activate
    
   'clear memory
   Set wbTarget = Nothing
   Set wbThis = Nothing
    
End Sub

Ik zie door de bomen het bos niet meer, omdat elke voorbeeld macro net weer een andere aanpak heeft en ik het heel moeilijk vind om te zien wat er nu eigenlijk gebeurd.
Zou iemand mij hier verder mee willen helpen?

Mvg Erik
 
Ik ben warm.

Het volgende doet wat het moet doen behalve dat hij nu alleen de laatste regel van de sheet "Export" kopieert naar het bestand Overzicht, Kan iemand mij alstublieft vertellen hoe ik niet alleen de laatste regel maar alle in dit geval 9 regels selecteer?


Code:
Sub Exporteren()

Workbooks.Open Filename:="F:\Data\Overzicht.xlsx"

Set d = Workbooks("Overzicht.xlsx").Sheets("Erik")
Set c = Workbooks("Sjabloon.xlsm").Sheets("Export")

Dim LastRow
Dim NewRow

LastRow = c.Range("A65536").End(xlUp).Row
NewRow = d.Range("A65536").End(xlUp).Row

d.Range("A" & NewRow + 1, "E" & NewRow + 1).Value = c.Range("A" & LastRow + 1, "E" & LastRow).Value

Workbooks("Sjabloon.xlsm").Sheets("Export").Activate

Dim GetDate
Dim MyDate
GetDate = d.Range("A65536").End(xlUp).Row
MyDate = d.Range("A" & GetDate).Value

Workbooks("Overzicht.xlsx").Activate
'ActiveWorkbook.Close SaveChanges:=True

End Sub
 
Beste,

Code:
Range("A1:E10").copy Workbooks("export.xlsx").Sheets("export").Range("A" & Rows.Count).End(xlUp).Offset(1)
Hoogstwaarschijnlijk zal je Workbooks en sheets nog moeten aanpassen voor eigen gebruik
 
Laatst bewerkt:
Welke regel van de code die ik heb moet ik dan vervangen door de door jou voorgestelde regel code?
 
Wandel eens met <F8> door de code en bekijk in het bijzonder deze regel

Code:
d.Range("A" & NewRow + 1, "E" & NewRow + 1).Value = c.Range("A" & LastRow + 1, "E" & LastRow).Value
dit zal altijd alleen de laatse regel opleveren. Beter is het als je even een voorbeeld bestandje maakt.
 
Dit kort stukje code doet wat jij wilt (tenminste als ik het goed begrepen heb).
Code:
Sub Overdragen()
ls = Workbooks("Sjabloon.xlsm").Sheets(1).Range("A1:K10")
With Workbooks.Open("C:\Users\Gebruiker\Documents\Overzicht.xlsx")
     .Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset().Resize(10, 11) = ls
     .Save
     .Close False
  End With
End Sub
Dit zijn altijd 10 rijen maar niet altijd allemaal gevuld
De code is ingesteld op 10 rijen, leeg of gevuld maakt niet uit.
De datum in kolom A wordt meegenomen.

Het pad in de code moet je wel aanpassen aan jouw situatie.
 

Bijlagen

Beste Wieter,

Je bent geweldig, mooi kort stukje code. En doet idd precies wat ik wilde.

Zou je mij deze regel uit willen leggen: ".Sheets("Erik").Cells(Rows.Count, 1).End(xlUp).Offset().Resize(10, 11) = ls" ?

Ik ben enorm geholpen, maar ik wil er ook iets van leren.
 
Oei, iets uitleggen is niet mijn beste eigenschap.
Ik zal proberen.
Code:
.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(10, 11) = ls
- Sheets(1) = spreekt voor zich, het eerst blad van het bestand (Sheets("naam") kan ook)
- Cells(Rows.Count, 1).End(xlUp) = (Tel de lege rijen, in kolom1). Van beneden naar boven tot aan de laatst gevulde cel
- Offset(1) = Verschuif(1 rij naar beneden, 0 kolommen)
- Resize(10, 11) = Reserveer de nodige ruimte, ls is de waarden van Range("A1:K10") , dat zijn 10 rijen en 11 kolommen

Einde van een hopeloze poging uit uitleggen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan