Registriert seit: 27.01.2019
Version(en): 365
Hallo,
ich möchte zuerst eine kurze Erläuterung zu der Tabelle geben.
Es handelt sich um ein Tabellenblatt
(Arbeitstabelle) dessen Einträge aktualisiert werden müssen da mit diesen Daten in der Arbeitsmappe weiter gerechnet wird. Zum aktualisieren sollen die Daten aus einem identischen aktuelleren Tabellenblatt
(Datentabelle) kopiert werden. (kommt per Email oder OneDrive und wird zum kopieren auf dem Rechner gespeichert)
Deshalb habe ich mal dieses Makro zusammen gebastelt und es funktioniert soweit ...
Sub test_update()Dim Dateiauswahl As Varianterneut:Dateiauswahl = Application.GetOpenFilenameIf Dateiauswahl <> False Then Workbooks.Open Filename:=DateiauswahlElse If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen, oder 'Abbrechen' um den Vorgang zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut Else Exit Sub End IfEnd If' Range("B6:U110").Select Selection.Copy Windows("Arbeitstabelle").Activate ActiveSheet.Paste Range("B6").Select Windows("Datentabelle").Activate ActiveWindow.Close Range("B6").Select End Sub... nun hätte ich nur gerne, dass der Name "Datentabelle" nicht fest eingetragen ist sondern durch den Dateinamen der Datei die
zum kopieren ausgewählt wurde jeweils ersetzt wird. Dann könnte ich z.B. das Datum anfügen ( z.B. Datentabelle_151021)
Viele Grüße
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
teste bitte deinen überarbeiteten Code aus. Er sollte einwandfrei funktionieren. Wahrscheinlich verwirrt es dich das ich keinen Befehl "Paste" verwende.
Diese Schreibweise, deine Zieladresse direkt an Copy anzuhängen, ist das Wissen von Excel Fachleuten. Probier es bitte selbst aus. (ungetestet)
Ich verzichte auch auf das Fenster umschalten und schliesse einfach die geöffnete Aktive Mappe.
mfg Gast 123
Code:
Sub test_update()
Dim Dateiauswahl As Variant
erneut:
Dateiauswahl = Application.GetOpenFilename
If Dateiauswahl <> False Then
Workbooks.Open Filename:=Dateiauswahl
Else
If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen," & _
" oder 'Abbrechen' um den Vorgang zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut
Exit Sub
End If
'aktive Mappe kopieren und schliessen
Range("B6:U110").Copy _
ThisWorkbook.Sheets("Arbeitstabelle").Range("B6")
ActiveWindow.Close savechanges:=False
End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• Mugel
Registriert seit: 27.01.2019
Version(en): 365
Hallo,
erst mal vielen Dank aber leider funktioniert es nicht
Ich bekomme folgende Fehlermeldung:Laufzeitfehler '9':Index außerhalb des gültigen BereichsDas ist der gelb markierte Fehlerbereich:Range("B6:U110").Copy _
ThisWorkbook.Sheets("Arbeitstabelle").Range("B6")Viele GrüßeMugel
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
ich bin überrascht und habe den Code noch einmal getestet. Bei mir läuft er in meiner Testdatei einwandfrei!
Bedingung ist, das auch eine Tabelle mit dem Namen "Arbeitstabelle" vorhanden ist! Heisst die bei dir anders??
Du kannst die Tabelle auch über den Index angeben, z.b. Worksheet(1). Sie muss dann aber immer an 1. Stelle stehen!
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• Mugel
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
16.10.2021, 14:03
(Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2021, 14:24 von {Boris}.)
Hi,
bei der TE heißt die
Mappe "Arbeitstabelle" - und nicht das Blatt. Daher wohl die Irritation.
Hi Gast 123,
Zitat:Diese Schreibweise, deine Zieladresse direkt an Copy anzuhängen, ist das Wissen von Excel Fachleuten.
Ich würde das nicht allein den Fachleuten zuschreiben, sondern allen, die in der Lage sind, F1 zu drücken, um die Onlinehilfe zu konsultieren.Da liest man dann, dass die Copy-Methode einen optionalen Parameter Destination hat. Wird er mit angegeben, wird direkt dorthin kopiert, andernfalls in die Zwischenablage.
Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:1 Nutzer sagt Danke an {Boris} für diesen Beitrag 28
• Mugel
Registriert seit: 27.01.2019
Version(en): 365
16.10.2021, 15:38
(Dieser Beitrag wurde zuletzt bearbeitet: 16.10.2021, 15:41 von Mugel.)
Hallo,
S O R R Y der Fehler lag bei mir. Arbeitstabelle ist zwar der korrekte Name, war aber falsch geschrieben (Arbeitsabelle)
Es funktioniert natürlich perfekt !!
Aber eine Frage hätte ich dann doch noch ...
Wenn ich den Bereich
("B6:U110") mal ergänzen möchte z.B. um den Bereich
("x6:AQ110") , wie kann ich das dann hinzufügen ??
Viele Grüße
Mugel
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi,
Zitat:Wenn ich den Bereich ("B6:U110") mal ergänzen möchte z.B. um den Bereich ("x6:AQ110") , wie kann ich das dann hinzufügen ??
Am Einfachsten: 2 mal kopieren (und einfügen).
Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:1 Nutzer sagt Danke an {Boris} für diesen Beitrag 28
• Mugel
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
freut mich das es nur ein Schreibfehler war. Passiert mir auch.
Beim 2. kopieren bitte daran denken die
Zieladresse zu ändern! Sonst überschreibst du die vorherigen Daten in Zelle "B6"
Du kannst den 2. Kopiercode auch ins Modul einbauen und ganz oben eine Const Anweisung einbauen die auf "Ja" oder "" gesetzt werden kann.
Setzt du dann vor den 2. Code eine If Anweisung wird er nur bei "Ja" ausgeführt. Zur Demo für dich ggf. auch mit einer MsgBox Abfrage mit Ja/Nein.
Bitte im 2. Code noch die richtige Zieladresse einsetzen. Sonst klappt es nicht.
mfg Gast 123
Code:
Const Copy2 = "Ja" 'Ja oder "" für NICHT ausführen
Sub test_update()
Dim Dateiauswahl As Variant
erneut:
Dateiauswahl = Application.GetOpenFilename
If Dateiauswahl <> False Then
Workbooks.Open Filename:=Dateiauswahl
Else
If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen," & _
" oder 'Abbrechen' um den Vorgang zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut
Exit Sub
End If
'aktive Mappe kopieren und schliessen
Range("B6:U110").Copy _
ThisWorkbook.Sheets("Arbeitstabelle").Range("B6")
If Copy2 = "Ja" Then
If MsgBox("2. Bereich 'X6:AQ110' mit kopieren?", vbYesNo) = vbYes Then
Range("X6:AQ110").Copy _
ThisWorkbook.Sheets("Arbeitstabelle").Range("xxx") ' Zieladresse angeben!
End If
End If
ActiveWindow.Close savechanges:=False
End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28
• Mugel
Registriert seit: 27.01.2019
Version(en): 365
17.10.2021, 10:12
(Dieser Beitrag wurde zuletzt bearbeitet: 17.10.2021, 10:14 von Mugel.)
Hallo und vielen Dank für die Hilfe
Manchmal braucht's eben mehr Hilfe als nur die dicken Bücher.
Gruß Mugel
Registriert seit: 27.01.2019
Version(en): 365
Hallo Gast 123,
ich hätte da noch eine Frage ...
So habe ich das mit dem Kopieren dank deiner Hilfe gelöst ... Es funktioniert !!
Sub Update_zeiten()Dim Dateiauswahl As Varianterneut:Dateiauswahl = Application.GetOpenFilename If Dateiauswahl <> False Then Workbooks.Open Filename:=DateiauswahlElse If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen," & _ " oder 'Abbrechen' um den Vorgang zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut Exit SubEnd If 'aktive Mappe kopieren und schliessen 'Plan A Range("B6:U110").Copy _ ThisWorkbook.Sheets("zeiten").Range("B6") 'Plan B Range("X6:AQ110").Copy _ ThisWorkbook.Sheets("zeiten").Range("X6") 'Plan C Range("AT6:BC110").Copy _ ThisWorkbook.Sheets("zeiten").Range("AT6") ActiveWindow.Close savechanges:=FalseEnd Sub
Die Datei mit den Copy-Daten heißt: "Upd_Zeiten_+akt.Datum" (z.B. "Upd_Zeiten_081121")---------------------------------------------------------------------------------------------------------------------
Nun habe ich aus der gleichen Arbeitsmappe für ein anderes Tabellenblatt auch eine Kopieren-Funktion gebastelt ... Es funktioniert !!
Sub Update_zuordnung()Dim Dateiauswahl As Varianterneut:Dateiauswahl = Application.GetOpenFilename If Dateiauswahl <> False Then Workbooks.Open Filename:=DateiauswahlElse If MsgBox("Es wurde keine Datei ausgewählt. Klicken Sie 'OK' um eine Datei auszuwählen," & _ " oder 'Abbrechen' um den Vorgang zu beenden.", (vbOKCancel)) = vbOK Then GoTo erneut Exit SubEnd If 'aktive Mappe kopieren und schliessen 'zuordnung Range("H5:O43").Copy _ ThisWorkbook.Sheets("zuordnung").Range("H5") ActiveWindow.Close savechanges:=FalseEnd SubDie Datei mit den Copy-Daten heißt: "Upd_Zuordnung_+akt.Datum" (z.B. "Upd_Zuordnung_081121")---------------------------------------------------------------------------------------------------------------------------------
Nun muss ich vermeiden, dass bei einem Update die Copy-Daten nicht verwechselt werden da die Inhalte sonst im falschen Tabellenblatt eingefügt werden.
Gruß Mugel