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

selection paste in ander werkblad

Status
Niet open voor verdere reacties.

gastono

Gebruiker
Lid geworden
13 mrt 2007
Berichten
10
Heb problemen met de volgende macro.
Probeer de selectie van het actieve werkblad te kopieren naar een ander bestand met een regel verspring functie.
Kan wel verspringend letters invoeren "BBB" maar niet de in het eerst venster gekopieerde cel.
Code:
Sub Macro2()
'
' Macro2 Macro
'
' Sneltoets: CTRL+n
'
    Range("A1").Select
    Selection.Copy
    Workbooks.Open "E:\Users\Gaston en Tanja\Desktop\Map2.xlsx"
    If Range("A2") = "" Then
    Range("A1").Offset(1, 0) = "BBB"
    Else
    Range("A1").End(xlDown).Offset(1, 0) = "BBB"
    End If
    Workbooks("Map2.xlsx").Close SaveChanges:=True
    Windows("Map1.xlsm").Activate
End Sub

Pleazze help
 
Code:
Sub Macro2()

    Range("A1").Select
    Selection.Copy
    [B][COLOR="Red"]Workbooks.Open "E:\Users\Gaston en Tanja\Desktop\Map2.xlsx"[/COLOR][/B]    
    If Range("A2") = "" Then
    Range("A1").Offset(1, 0) = "BBB"
    Else
    Range("A1").End(xlDown).Offset(1, 0) = "BBB"
    End If
    Workbooks("Map2.xlsx").Close SaveChanges:=True
    Windows("Map1.xlsm").Activate
End Sub


Ik begrijp absoluut niet wat je wil of bedoelt. In de macro open je een tweede werkblad, maar dat gebruik je nergens om er iets naar toe te kopieren?

Je plaatst in deze macro alleen de letters "BBB" in de eerste vrije cel van A1 van je eerste bestand, meer doet-ie niet, behalve dan opslaan en sluiten.
 
Ik zal het wat duidelijker uitleggen.
Deze macro is slecht een probeersel, uiteindelijk moet ik de adressgegevens van een klant (ingevoerd in de klant eigen klant bestand) kopieren naar een adressen bestand van al mijn klanten.
In dit probeersel is dus map1.xslm het klant bestant en map 2.xlsx het adressen bestand.
stel ik heb map1 geopend en in cel A1 wordt de naam van de klant ingevoerd (dit zal dan altijd cel A1 zijn daar elke klant zijn eigen bestand krijgt).
De macro moet dan A1 selecteren en kopieren(map1.xlsm is dan dus al geopend), dan moet map2.xlsx worden geopenden (Workbooks.Open "E:\Users\Gaston en Tanja\Desktop\Map2.xlsx" opent EN ACTIVEERD Map2.xlsx) en moet de gekopieerde naam van de eerste klant in A1 van map2.xlsx geplakt worden. map 2 moet worden opgeslagen en afgesloten waarna map1.xlsm weer wordt geactiveerd.
De naam van de volgende klant komt dan in A2 van map2 enz enz.
Ik ben pas sinds enkele weken excell aan het proberen en het lukt me niet om de gekopieerde cel van map 1 te plakken in map 2 MET EEN VERSPRINGFUNCTIE.
Van daar dat ik heb geprobeerd met "BBB" het lukt wel om dit met een verspring functie te laten werken ."BBB'is dus uiteindelijk helemaal niet de bedoeling.

Mischien wordt het nu wat duidelijk.

Code:
Sub Macro2()
'
' Macro2 Macro
'
' Sneltoets: CTRL+n
'
    Range("A1").Select
    Selection.Copy
    Workbooks.Open "E:\Users\Gaston en Tanja\Desktop\Map2.xlsx"
    If Range("A2") = "" Then
    Range("A1").Offset(1, 0) = "BBB"
    Else
    Range("A1").End(xlDown).Offset(1, 0) = "BBB"
    End If
    Workbooks("Map2.xlsx").Close SaveChanges:=True
    Windows("Map1.xlsm").Activate
End Sub

Gaston
 
Laatst bewerkt:
zal het nog duidelijker maken

Het gaat hier om de volgende 2 bestanden.
Ik was maar eerst begonnen macro's te proberen (nooit gedaan).
De bedoeling is dus dat elke nieuwe klant een eigen klantbestand krijgt.
Na het invullen van het klant bestand is het de bedoeling dat de adress gegevens automatisch worden gekopieerd naar het adressen bestand als het klant bestand wordt afgesloten.
Dit lukte is mij wel gelukt (op het automatisch uitvoeren van de macro bij afsluiten na) met 1 klant maar zodra voor een andere klant een klantbestand werd ingevuld werden de adresgegevens van de eerst klant overschreven.
Daar zit dus nu het hele probleem waar ik niet uitkom.
Het verspringen naar de volgende regel
Zal nu toch wel wat duidelijker zijn.
Alvast bedankt voor de moeite

Vriendelijke groet Gaston
 

Bijlagen

Met ook een voorbeeld in Excel 2003 versie bereik je meer helpers.
 
Het zal wel door de 2007-2003 verschillen komen, maar de werkbladen doen erg raar.

Je gebruikt erg veel kleur, wees je er van bewust dat dit, bij grotere bestanden, Excel trager maakt.

De volgende macro bepaald de eerste vrije cel in kolom A.
Code:
Sub EersteLegeRegel()
Range("A4").Select
While Not ActiveCell.Offset(1, 0).Range("A1").Value = ""
    ActiveCell.Offset(1, 0).Range("A1").Select
Wend
ActiveCell.Offset(1, 0).Range("A1").Select

End Sub

Normaal zou je daar een fomule met iets van ROWS.COUNT voor gebruiken, maar die doet het in jouw bestand niet, komt op een waarde van 65536 uit.
 
code update

ik heb zelf een beetje lopen klooien.
Het is me nu gelukt om naar de volgende lege cel in kolom A te springen maar als ik deze methode voor alle kolommen toepas heb ik het probleem dat als een klant geen bv. email adress opgeeft het email adress van de volgende klant bij de vorige klant komt te staan daar dit de eerste lege cel is in deze kolom.
Het moet ook mogelijk zijn om het naar gegevens Ïncrementeel" te verspringen i.p.v. "absoluut".
Dus dat het adres niet in B5 wordt opgeslagen maar RECHTS VAN A5(active cel). de postcode niet in C5 maar RECHTS VAN B5(active cell).
Ben er zelf echter nog niet achter hoe dit werkt met het gebruik van incrementeel offset gebruik.:o

Code:
Sub Exportadres()
'
' Exportadres Macro
'
' Sneltoets: CTRL+f
'
    Range("F5").Select
    Selection.Copy
    Workbooks.Open "E:\Natural Beauty Parkstad\CRM\CRM Adresgegevens.xlsx"
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("B5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F8").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("C5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("D5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Application.WindowState = xlMinimized
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("F5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("G5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("E5").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close ("CRM Adresgegevens.xlsx")
    Windows("CRM Klant bestanda.xlsm").Activate
End Sub
 
Code eventjes stukje ingekort en ipv onderaan toevoegen worden nu de gegevens altijd op rij 2 toegevoegt. zodra je de macro gebruikt de volgende keer zal die eerst weer een regel invoegen tussen rij 1 en 2 en daarna alle nieuwe gegevens invoeren op rij 2. Dus gaan alle gegevens mee op één rij ook al word er niet op alle plaatsen wat ingevuld

Code:
Sub Exportadres()
'
' Exportadres Macro
'
' Sneltoets: CTRL+f
'
    
    Workbooks.Open "E:\Natural Beauty Parkstad\CRM\CRM Adresgegevens.xlsx"
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("A2").EntireRow.insert 

    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F5").Copy

    Windows("CRM Adresgegevens.xlsx").Activate
    Range("A2").pasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F7").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("B2").PasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F8").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("C2").PasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F9").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("D2").PasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F10").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("F2").PasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F11").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("G2").PasteSpecial
    
    Windows("CRM Klant bestanda.xlsm").Activate
    Range("F12").Copy
    
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("E2").PasteSpecial
    
    ActiveWorkbook.Save
    ActiveWorkbook.Close True
    
End Sub
 
Laatst bewerkt:
Relleboer

In plaats van

Code:
Windows("CRM Klant bestanda.xlsm").Activate
    Range("F5").Copy

    Windows("CRM Adresgegevens.xlsx").Activate
    Range("A2").pasteSpecial

kan je toch doen:

Code:
Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("A2").Value = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F5").Value

De rest is analoog.

Minder code en sneller uitgevoerd.

Wigi
 
Wigi je hebt helemaal gelijk. Ik was er ook mee bezig maar was andersom aan het denken. copy destination en dat wou niet lukken.

maar weer wat geleeerd van je.

Thanks
 
Hier de code na de verandering die WIGI voorstelde

Code:
Sub Exportadres()
'
' Exportadres Macro
'
' Sneltoets: CTRL+f
'
    
    Workbooks.Open "E:\Natural Beauty Parkstad\CRM\CRM Adresgegevens.xlsx"
    Windows("CRM Adresgegevens.xlsx").Activate
    Range("A2").EntireRow.Insert


    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("A2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F5").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("B2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F7").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("C2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F8").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("D2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F9").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("F2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F10").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("G2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F11").Value
    Workbooks("CRM Adresgegevens.xlsx").Sheets("naamvandesheet").Range("E2").Value _
    = Workbooks("CRM Klant bestanda.xlsm").Sheets("naamvandesheet").Range("F12").Value
    ActiveWorkbook.Save
    ActiveWorkbook.Close True
    
End Sub
 
En als de code nog veel korter moet, dan kan je een With ... End With statement gebruiken.

Of 2 variabelen definiëren als Worksheet en vullen met blad voor Bronblad en Doelblad.

Bijkomend voordeel is dat er op minder plaatsen vaste tekst staat (zoals naam bestanden, bladen, etc.), dus de code wordt beter onderhoudbaar.

Wigi
 
En als de code nog veel korter moet, dan kan je een With ... End With statement gebruiken.

Of 2 variabelen definiëren als Worksheet en vullen met blad voor Bronblad en Doelblad.

Bijkomend voordeel is dat er op minder plaatsen vaste tekst staat (zoals naam bestanden, bladen, etc.), dus de code wordt beter onderhoudbaar.

Wigi


Als je tevens zorgt dat je bron en doel gegevens iets anders ordend kun je de volgende code gebruiken
Code:
Sub Exportadres()
' Exportadres Macro
'
' Sneltoets: CTRL+f
'
    Dim a, b
    a = "CRM Adresgegevens.xlsx"
    b = "CRM Klant bestanda.xlsm"
    Workbooks.Open "E:\Natural Beauty Parkstad\CRM\CRM Adresgegevens.xlsx"
    Workbooks(a).Range("A2").EntireRow.Insert
    
    rij = 6
        For kolom = 1 To 7
        Workbooks(a).Sheets(1).Cells(2, kolom).Value = Workbooks(b).Sheets(1).Cells(rij, 6).Value
        rij = rij + 1
        Next kolom
    
    ActiveWorkbook.Close True
    
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan