Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code für Copy und Past einarbeiten

Code für Copy und Past einarbeiten
26.05.2022 22:44:49
Andreas
Folgender Code läuft sehr gut.
nun möchte ich am Ende noch folgendes abarbeiten.
bevor meine Wunschdatei Workbooks.Open lXlsxFile geschlossen wird, soll dort aus dem Workbooks "Deckblatt" der Zell-Bereich A14:M23 in "ThisWorkbook" ins Worksheet "Hilfstabelle EINGABE" in den Zell-Bereich A14:M23 eingefügt werden.,
Ich möchte das Macro aber nicht zerstören- Kann jemand beim Code helfen?

Sub Öffne_Wunschdatei()
Dim lXlsxFile As Variant, liSh As Integer, lboExist As Boolean
With Application
.EnableEvents = False 'Ereignisverfolgung wie z Bsp Zellwertänderung, andere Zelle auswählen, usw wird deaktiviert; WICHTIG!!!: wenn du eine Datei mit Makro öffnest, deren Makro nach Öffnen ausgeführt werden soll, musst du diese Zeile hier löschen
.DisplayAlerts = False 'Warnmeldung, z Bsp Frage, ob eine Tabelle wirklich gelöscht werden soll, wird deaktiviert
End With
'wenn es das Verzeichnis "D:\Elektro Arbeit\Bestands-Datein" gibt, wird vor der Dateiauswahl in das Verzeichnis gewechselt (das erspart dir, erst mal das richtige Verzeichnis auszuwählen ;-) )
If Dir("D:\Elektro Arbeit\Bestands-Datein", vbDirectory)  "" Then
ChDrive "D:\"
ChDir "D:\Elektro Arbeit\Bestands-Datein"
End If
'es öffnet sich der Datei-Auswahl-Dialog
lXlsxFile = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*")
'Abbrechen oder ESC-Taste, wird das Makro beendet
If lXlsxFile = False Then Exit Sub
'die ausgewählte Datei wird geöffnet
Workbooks.Open lXlsxFile
With ThisWorkbook
'es wird geprüft, ob in - dieser Datei hier - eine Tabelle "Bestand_Bearb." vorhanden ist
For liSh = 1 To .Sheets.Count
If .Sheets(liSh).Name = "Bestand_Bearb." Then
lboExist = True
Exit For
End If
Next
'wenn "Bestand" vorhanden, wird darauf hingewiesen und gefragt, ob diese gegen "Bearbeiten" aus Wunschdatei ausgetauscht werden soll
If lboExist = True Then
'wenn JA, wird alte "Bestand_Bearb." gelöscht, "Bearbeiten" aus Wunschdatei ganz links eingefügt, in "Bestand_Bearb." umbenannt
If MsgBox("Die Tabelle ''Bestand_Bearb.'' ist schon vorhanden." & vbCrLf & "Sollen die Werte in ''Bestand_Bearb.'' mit den Werten aus '' Wunschdatei'' überschrieben werden?", vbQuestion + vbYesNo, "Frage") = vbYes Then
.Sheets("Bestand_Bearb.").Delete
Sheets("Bearbeiten").Copy Before:=.Sheets(1)
.Sheets(1).Name = "Bestand_Bearb."
End If
Else
'wenn "Bestand_Bearb." nicht vorhanden, wird "Bearbeiten" aus Wunschdatei "ungefragt" ganz links eingefügt + in "Bestand_Bearb." umbenannt
Sheets("Bearbeiten").Copy Before:=.Sheets(1)
.Sheets(1).Name = "Bestand_Bearb."
End If
End With
With Application
.EnableEvents = True 'Ereignisverfolgung wird wieder aktiviert
.DisplayAlerts = True 'Warnmeldungen werden wieder aktiviert
End With
'hier wird Wunschdatei ohne Speichern geschlossen
Workbooks(Split(lXlsxFile, "\")(UBound(Split(lXlsxFile, "\")))).Close False
End Sub
Grüße Andreas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code für Copy und Past einarbeiten
27.05.2022 08:19:02
Oberschlumpf
Hi Andreas,
du schreibst
...dem Workbooks "Deckblatt"...
Wenn du aber meinst ...dem Worksheet "Deckblatt"..., dann funktioniert das so:
genau zwischen...

End If
End With
...(das End With gehört zu ThisWorkbook) füg diesen Code ein...

Sheets("Deckblatt").Range("A14:M23").Copy .Sheets("Hilfstabelle EINGABE").Range("A14")
Hilfts?
Ciao
Thorsten
AW: Code für Copy und Past einarbeiten
27.05.2022 09:18:19
Andreas
Danke Torsten,
genau die richtige Einfügestelle. und es läuft.
Nur ein anders kleines Problem:
Beim Öffnen von "Wunschdatei" kommt das Hinweisfenster von MS Excel "Diese Arbeitsmappe enthält Verknüpfungen zu externen Inhalten..."
Gibt es eine Möglichkeit, der diesen Hinweis ungesehen z.B mit NEIN zu Beantworten -
Ich weiß- unter DATEN und ABFRAGEN und VERBINDUNGEN kann ich diese Verknüpfungen löschen. Nur leider sind diese in zu vielen Datein- und werden nicht gebraucht.
Deshalb ohne Abfrage und mit NEIN.

With Application
.EnableEvents = False 'Ereignisverfolgung wie z Bsp Zellwertänderung, andere Zelle auswählen, usw wird deaktiviert; WICHTIG!!!: wenn du eine Datei mit Makro öffnest, deren Makro nach Öffnen ausgeführt werden soll, musst du diese Zeile hier löschen
.DisplayAlerts = False 'Warnmeldung, z Bsp Frage, ob eine Tabelle wirklich gelöscht werden soll, wird deaktiviert
End With
Gruß Andreas
Anzeige
AW: Code für Copy und Past einarbeiten
27.05.2022 10:05:59
Oberschlumpf
Hi Andreas,
die einzige Möglichkeit, die ich fand, diese Meldung per VBA zu verhindern, ist:
änder diesen Code...

Workbooks.Open lXlsxFile
...um in

Workbooks.Open lXlsxFile, UpdateLinks:=False
Mit dem Parameter wird jede Datei ohne das Aktualisieren von Verknüpfungen gestartet, was aber auch zur Folge hat, dass - gar keine - Aktualisierung stattfindet.
Aber ok, genau das scheinst du ja erreichen zu wollen.
Hilfts?
Ciao
Thorsten
AW: Code für Copy und Past einarbeiten
27.05.2022 10:56:56
Andreas
Hallo Torsten,
ja- danke- das Meldungsfenster ist nicht mehr sichtbar.
Werde aber in der Quelldatei die Verknüpfungen löschen müssen- anderenfalls hole ich mir sie immer wieder in die Arbeitsmappe.
Diese kamen mal am Anfang der Programierarbeit in die Arbeitsmappen. Werden jedoch nicht benötigt.
So sind sie dann wenigstens beim nächsten Öffnen endlich weg.
Ein Macro der die Verknüpfungen in der Quelldatei selbständig entfernt- wird es nicht geben.
Gruß Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige