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

Overzetten data

Status
Niet open voor verdere reacties.

toverkamp

Gebruiker
Lid geworden
11 sep 2006
Berichten
403
Hallo allen,

Allereerst de beste wensen voor 2008!

Nu mijn vraag:
Ik heb een weekstaat gemaakt in Excel. In een ander tabblad komt de verkorte versie hiervan te staan. Deze dient gekopieerd te worden naar een ander Excel-bestand.

Ik heb een macro opgenomen die de cellen kopieert en vervolgens het desbetreffende Excel-bestand opent en het daar in de juiste kolom en regel plakt. Het probleem is echter dat de regel elke keer verschillend is, omdat hij op de eerstvolgende regel moet plakken.

Hoe kan ik dit zo in de macro verwerken dat hij dat zo doet?


ps. in de bijlage heb ik een voorbeeld gedaan
 

Bijlagen

Ik ben tot de volgende code gekomen. Alleen geeft hij een foutmelding bij het rode gedeelte. Dit klopt ook wel, omdat legeregel gedefinieerd is als X. Zou iemand weten hoe ik dit kan oplossen? Alvast hardstikke bedankt!

Code:
Sub Macro3()
'
    Range("A2:D2").Select
    Selection.Copy
    ChDir "F:\Bestandsmap\Weekrapporten"
    Workbooks.Open Filename:= _
        "F:\Bestandsmap\Weekrapporten\overzichtsblad.xls"
    Legeregel = Worksheets("blad2").Range("a" & Rows.Count).End(xlUp).Row + 1
    
    Dim X As Long
    X = Legeregel
   
   [COLOR="Red"]Legeregel.Select[/COLOR]
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("A2").Select
End Sub
 
Laatst bewerkt:
Even wat opmerkingen over je oplossing:
De ChDir "F:\Bestandsmap\Weekrapporten" doet niet veel

Verder zou je eigenlijk LegeRegel als RangeObject moeten declareren
Code:
Dim LegeRegel as Range
SET Legeregel = Worksheets("blad2").Range("a" & Rows.Count).End(xlUp).Row + 1

Je maakt het jezelf dan ook wat makkelijker omdat de intellisense je dan helpt met kiezen van de juiste methoden etc

Het is mij ook niet helemaal duidelijk waarvoor dit is:
Code:
Range("A2:D2").Select
    Selection.Copy
of is dat gewoon extra mee opgenomen met de macro recorder?
 
Het bestand:
Code:
ChDir "F:\Bestandsmap\Weekrapporten"
is het de map waar het te openen Excel bestand in staat.

De code:
Code:
Range("A2:D2").Select
Selection.Copy
Deze code kopieert de regel. Deze moet in het te openen Excel bestand geplakt worden. Dit gebeurt door middel van plakken speciaal > waarden.
 
Ah okay, copy is duidelijk
Over de CHDir:
je opent het bestand met een eenduidig pad:
Code:
Workbooks.Open Filename:= _
        "[B]F:\Bestandsmap\Weekrapporten[/B]\overzichtsblad.xls"

De CHDir voegt dus niets meer toe.
 
Ah okay, copy is duidelijk
Over de CHDir:
je opent het bestand met een eenduidig pad:
Code:
Workbooks.Open Filename:= _
        "[B]F:\Bestandsmap\Weekrapporten[/B]\overzichtsblad.xls"

De CHDir voegt dus niets meer toe.

Ah ok. Deze kwam er namelijk automatisch te staan toen ik de macro opnam. Maar hoe kan ik nu verder, zodat de gekopieerde regels in de eerstvolgende lege cel komt te staan?
 
Ik kom er nog niet helemaal uit. Kan iemand mij op de goede weg helpen? De code die ik tot nu toe heb is:

Code:
Sub Macro1()

    [COLOR="Red"]Dim LegeRegel As Range[/COLOR]
        
    Range("A3:E3").Select
    Selection.Copy
    
    Workbooks.Open Filename:= _
        "F:\Map\Weekrapporten tijdelijk\overzichtsblad.xls"
    
    [COLOR="red"]Set LegeRegel = ActiveWorkbook.Worksheets("blad2").Range("a" & Rows.Count).End(xlUp).Row + 1
    
    LegeRegel.Select[/COLOR]            
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
End Sub

Het gaat om het rode gedeelte. In het actieve werkboek moet blad 2 geselecteerd worden. Vervolgens moeten de gekopieerde waarden (A3:E3) geplakt worden in "Legeregel" (LegeRegel.Select). Dit is de eerstvolgende lege regel in kolom A van het actieve werkblad.
 
Ik heb 't al opgelost:

Code:
Sub Macro1()
        
    Range("A3:E3").Select
    Selection.Copy
    
    Workbooks.Open Filename:= _
        "F:\map\Weekrapporten tijdelijk\overzichtsblad.xls"
    
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select

            
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
End Sub
 
Die .Select'en zijn niet nodig.

bv

Code:
Range("A3:E3").Select
    Selection.Copy

wordt

Code:
Range("A3:E3").Copy
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan