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

kopiëren van ene naar andere openstaande excelsheet

Status
Niet open voor verdere reacties.
Met deze VBA vanuit de dochter werkt het helemaal oke: ik open lege dochter-document -> klik op de macrobutton -> explorer opent zich -> ik selecteer en open moederdocument -> bij openen moeder wordt direct kopie van de data naar dochter gemaakt. Voor jullie logisch, voor mij is VBA weer wat duidelijker geworden.

@ Edmoor: kun je me nog een tip geven om deze code helemaal te vervolmaken? Het moederdocument blijft namelijk geopend staan en zou nog afgesloten moeten worden, dan is de VBA helemaal compleet. Hoe aan te vullen?

Code:
Sub Kopie()
Application.Dialogs(xlDialogOpen).Show Application.ThisWorkbook.Path
Workbooks(2).Sheets("Blad1").Range("A1:B" & Range("A1").End(xlDown).Row).Copy Destination:= _
ThisWorkbook.Sheets("Blad1").Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row + 1)

End Sub
 
Sorry, te snel gevraagd, heb oplossing nu:

Code:
Sub Combi()
Application.Dialogs(xlDialogOpen).Show Application.ThisWorkbook.Path
Workbooks(2).Sheets("Blad1").Range("A1:B" & Range("A1").End(xlDown).Row).Copy Destination:= _
ThisWorkbook.Sheets("Blad1").Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row + 1)
ActiveWorkbook.Close Savechanges:=True

End Sub
 
Dat zal wel werken maar maak je dus totaal geen gebruik van de voorbeelden die ik plaatste.
Dan heeft het geven van voorbeelden geen zin, maar goed.
 
Ja hoor heeft wel zin, alleen moesten bij jouw voorbeeld - als ik het goed begrijp - beide bestanden in dezelfde map zitten, nu niet + het hoofddocument sluit na kopieren vanzelf, zodat alleen de dochter met de nieuwe data overblijft. Dus ik heb nu precies wat ik hebben wilde.
 
Druk eens op annuleren.
 
Ze moeten alleen wegens het voorbeeld in dezelfde map staan. Dat kan je simpel aanpassen.
Maar als je tevreden bent zo is het in orde natuurlijk :)
 
Hooggeleerde heren, tuurlijk krijg ik dan een fout, ik zal m voor de volledigheid bijsluiten voor degene die verder wil borduren en ook graag op annuleren wil kunnen drukken, maar ik druk er maar niet op en dan werkt het wat het voor mij moet doen :D

Screenshot_3.jpg
 
Mijn suggestie.
Code:
Sub Combi()
With Application.FileDialog(msoFileDialogOpen)
 .InitialFileName = ThisWorkbook.Path
   If .Show Then
     .Execute
        With ActiveWorkbook
          .Sheets(1).Range("A1:B" & Range("A1").End(xlDown).Row).Copy ThisWorkbook _
          .Sheets("Blad1").Cells(Rows.Count, 1).End(xlUp).Offset(1)
          .Close 0
        End With
    End If
End With
End Sub
 
Dank HSV, heb het nog even getest, ik kan nu annuleren ;) maar de gekopieerde data beginnen nu in cel A2 ipv A1 : heb je idee hoe dat komt? Kun je in jouw code aangeven wat daarvoor veranderd moet worden?

Screenshot_4.jpg
 
Zo komt het de eerste keer in A1 en de volgende keer er onder.
Code:
Sub Combi()
Dim Wb As Worksheet
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogOpen)
 .InitialFileName = ThisWorkbook.Path
   If .Show Then
     .Execute
        Set Wb = ThisWorkbook.Sheets("Blad1")
         With ActiveWorkbook
           .Sheets(1).Cells(1).Range("A1:B" & Range("A1").End(xlDown).Row).Copy Wb _
           .Cells(Rows.Count, 1).End(xlUp).Offset(Abs(Wb.Cells(1) <> ""))
           .Close 0
        End With
    End If
End With
End Sub
 
@HSV

Formule werkt zoals gezegd precies goed voor wat ik in mijn ene project wilde (het nieuwe werkboek openen - macro aanroepen om data te importeren vanuit vorige versie - te importeren werkboek via verkenner selecteren - oude werkboek sluiten - bijgewerkte werkboek open laten staan).

Hoe wordt de formule echter als ik bepaalde cellen van bepaalde sheets (sheet "start" en sheet "goed") 1 op 1 wil kopieren naar de nieuwe versie? Zie bijlagen. Verder de procedure zo laten, dat is precies zoals ik het graag wil.

Bekijk bijlage Versie 1.0.xlsmBekijk bijlage Versie 2.0.xlsm
 
Alleen de waarden?
Code:
Sub Combi()
Dim Wb As Workbook, sh, cl
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogOpen)
 .InitialFileName = ThisWorkbook.Path
   If .Show Then
     .Execute
     Set Wb = ThisWorkbook
        For Each sh In Array("Start", "Goed")
          With ActiveWorkbook.Sheets(sh)
            If sh = "Start" Then
              Wb.Sheets(sh).Range(.Cells(10, 3).CurrentRegion.Address) = .Cells(10, 3).CurrentRegion.Value
              Wb.Sheets(sh).Range(.Cells(10, 6).CurrentRegion.Address) = .Cells(10, 6).CurrentRegion.Value
             Else
              For Each cl In .Range("C9,F9,C14,F14,C19,F19")
                Wb.Sheets(sh).Range(cl.Address) = cl.Value
              Next cl
            End If
          End With
        Next sh
    ActiveWorkbook.Close 0
   End If
End With
End Sub
 
Laatst bewerkt:
Ja, alleen de waarden hoeven gekopieerd te worden, dus is oke. Alleen: als ik hiermee verder wil borduren (als er bv een 3e tabblad bijkomt) dan kan ik deze code wat moeilijk "lezen" om zelf uit te breiden.

Kan ik "Else" vervangen door : If sh = "Goed" Then en voor elk nieuw tabblad zo verder gaan? dus If sh = "Sheet3" Then?
 
Waarom niet dit?
Code:
For Each sh In Array("Start", "Goed", "Sheet3")
 
Als alle tabbladen gelijk van structuur waren kan het veel eenvoudiger, maar ja.....

Je kan de .. ElseIf.... gebruiken of met 'Select Case werken.
 
Oke, ik ga er binnenkort verder mee stoeien. Bedankt tot zover, maar ben bang dat ik weer terugkom als er idd die derde sheet aankomt met andere te kopieren cellen..
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan