Zieldaten aktualisieren ohne Öffnen der Updatedatei möglich?
#1
Hallo,

ich habe eine 'Basis'- und eine separate 'Update'-Arbeitsmappe gleicher Struktur vorliegen.

Ein Teil der 'Update'-Arbeitsmappe soll in die 'Basis'-Arbeitsmappe per Makro aktualisiert / kopiert werden. 
Dies funktioniert bei mir korrekt, wenn beide Arbeitsmappen geöffnet sind, folgendermaßen:

Code:
Sub Makro1_Aktualisieren()
    Windows("Update_Mappe.xlsm").Activate
    Range("B2:B7").Select
    Selection.Copy
    Windows("Basis_Mappe1.xlsm").Activate
    Range("B2:B7").Select
    ActiveSheet.Paste
End Sub

Wenn die 'Update'-Arbeitsmappe nicht geöffnet ist, erhalte ich einen Laufzeitfehler '9': Index außerhalb des gültigen Bereiches.
Frage: Gibt es eine Möglichkeit, das Update ohne Öffnen der 'Update'-Arbeitsmappe durchzuführen? 

Danke!
Antworten Top
#2
Hi,

abgesehen davon, dass man den Code mit Direktzuweisungen noch etwas "aufhübschen" kann: Nein - in geschlossene Dateien kann man nichts schreiben.
Man kann die Zieldatei aber quasi "im Hintergrund" öffnen. Dafür gibt es die GetObject-Funktion. Aber faktisch wird sie damit auch geöffnet.
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Wanderfalke
Antworten Top
#3
Hallo

ich habe den Code mal etwas überarbeitet.  So öffnet er die Mappe, wenn ihr noch den Ordnerpfad im Makro angibt.  Zur Zeit ist er unvollständig!
Nach dem kopieren wird die Update Mappe per Makro gespeichert und geschlossen.  Würde mich freuen wenn euch das weiterholft.

aaa

mfg Gast 123

Code:
Sub Makro1_Aktualisieren_Neu()
Dim Update As String, sPfad As String, j As Integer
    sPfad = "C:\User....."          'Ordner Pfad angeben
    Update = "Update_Mappe.xlsm"    'Update Dateiname
   
    On Error GoTo Fehler
    For j = 1 To Workbooks.Count
        If Workbooks(j).Name = Update Then GoTo Start
    Next j
    'wenn nicht offen Update per Makro Öffnen
    Workbooks.Open Filename:=sPfad & Update
Start:
    Workbooks("Update_Mappe.xlsm").Worksheets("Tabelle1").Range("B2:B7").Copy _
    Workbooks("Basis_Mappe1.xlsm").Worksheets("Tabelle1").Range("B2:B7")
   
    Workbooks("Update_Mappe.xlsm").Save     'Speichern
    Workbooks("Update_Mappe.xlsm").Close    'Shliessen
Exit Sub

Fehler:  MsgBox "unerwarteter Fehler aufgetreten" & vbLf & Error()
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Wanderfalke
Antworten Top
#4
Hallo,

danke sehr, es funktioniert perfekt!

Richtig ist natürlich, dass die Update-Datei zumindest zum Lesen (im Hintergrund) kurz geöffnet werden muss. 

VG!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste