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

VBA automatisch openen andere werkmap en dan gegevens kopieren in 1ste lege rij

Status
Niet open voor verdere reacties.

peter59

Terugkerende gebruiker
Lid geworden
21 mei 2007
Berichten
2.681
Besturingssysteem
Windows 11
Office versie
Office 365
Hallo,

Ik heb een code gebruikt uit een topic van HelpMij.
Deze heb ik proberen om te bouwen naar onderstaand maar helaas is mij het niet gelukt.
Uit een werkmap met de naam "C:\Users\peter\Desktop\Verzameltemplate.xlsx") is het de bedoeling om een bepaalde range te copieren en deze in een werkmap te plakken in de 1ste lege rij.
De werkmap waar dit heen gekopieerd dient te worden heeft de naam ("C:\Users\peter\Desktop\Acaleph").
Deze map dient automatisch te worden geopend en na kopiëren weer worden gesloten.
Bij de rode tekst in de code gaat het al fout en verder kom ik helaas niet.
Wie kan mij de goede weg opduwen?

Dank alvast.

Code:
Sub macro1()
Dim i As Long
Dim wb As Workbook


    On Error Resume Next
    Set wb = Workbooks("C:\Users\peter\Desktop\Verzameltemplate.xlsx") [COLOR="#008000"]'doelbestand[/COLOR]
    On Error GoTo 0
    
    If wb Is Nothing Then
        [COLOR="#FF0000"]Set wb = Workbooks.Open("C:\Users\peter\Desktop\Verzameltemplate.xlsx")[/COLOR] [COLOR="#008000"]'doelbestand[/COLOR]
    Else
    End If
Workbooks("C:\Users\peter\Desktop\Acaleph").Sheets("Blad1").Activate [COLOR="#008000"]'origineel[/COLOR]
i = Workbooks("C:\Users\peter\Desktop\Verzameltemplate").Sheets("Blad1").Range("A" & Rows.Count).End(xlUp).Row [COLOR="#008000"]'doelbestand[/COLOR]

Range("A4:O100").Select [COLOR="#008000"]'copieren uit origineel[/COLOR]
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False [COLOR="#008000"]'plakken in doelbestand in de eerste lege cel in kolom A[/COLOR]
Range("A4").Select

End Sub
 
Laatst bewerkt:
Probeer eens direct vanuit Excel het bestand "C:\Users\peter\Desktop\Verzameltemplate.xlsx" te openen, lukt dat? ZO ja, is het bestand wellicht al open in Excel? dan geeft de WOrkbooks.Open methode een foutmelding.
 
Hallo Jan Karel

Dank alvast voor je respons.
Helaas.
Ik heb alles afgesloten hierna het z.g. origineel ("C:\Users\peter\Desktop\Acaleph") geopend en macro uitgevoerd.
Wederom fout.

Mvg
Peter
 
Dit zou de gehele code moeten zijn als het bestand aanwezig is.
Code:
Sub macro1()
 with Workbooks.Open("C:\Users\peter\Desktop\Verzameltemplate.xlsx")
   .Sheets("verzameltemplate").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(97, 15) = ThisWorkbook.Sheets("Blad1").Range("A4:O100").Value
   .close true
 end with
End Sub
 
Hallo HSV

Heel hartelijk dank voor je reactie.
Op onderstaand blijft het nog steeds op fout gaan.
En ja, het bestand is aanwezig.
HTML:
with Workbooks.Open("C:\Users\peter\Desktop\Verzameltemplate.xlsx")

Het kan 1 of 2 dagen duren vooraleer ik op verdere reacties reageer.

Nogmaals dank HSV.

Mvg
Peter
 
Klik met de rechtermuisknop op het bestand en ga naar eigenschappen en vergelijk.
 
En vertel ook eens de foutmelding die je krijgt.
 
Hallo HSV/Edmoor

Het is gelukt.

@HSV
Je hebt mij getriggerd om eens naar de eigenschapen te kijken en ja, daar zat de fout.
De code aangepast in het onderstaande. De groene tekst is erbij gevoegd of verandert.
Code:
Sub macro1()
 With Workbooks.Open("C:\Users\peter\Desktop\[COLOR="#008000"][B]Verzameltemplate[/B][/COLOR]\Verzameltemplate.xlsx")
   .Sheets("[COLOR="#008000"][B]Blad1[/B][/COLOR]").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(200, 15) = ThisWorkbook.Sheets("Blad1").Range("A4:O203").Value
   .Close True
 End With
End Sub

@Edmoor
In eerste instantie kreeg ik onderstaande foutmelding.
Foutmelding.JPG

Het geheel is nu opgelost waarvoor heel hartelijk dank.

Mvg
Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan