Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
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

Mappe per Makro aus anderer Mappe öffnen

Mappe per Makro aus anderer Mappe öffnen
30.03.2015 15:55:54
Fritz_W
Hallo Forumsbesucher,
mit welchem Makro kann ich aus einer geöffneten Mappe die Mappe "Sicherung.xlsm" öffnen? Die Datei befindet sich im gleichen Ordner wie die Datei, aus der das Makro gestartet wird.
Für Eure Unterstützung vielen Dank im Voraus.
Liebe Grüße
Fritz

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mappe per Makro aus anderer Mappe öffnen
30.03.2015 17:00:22
fcs
Hallo Fritz,
Sub OeffnenSicherung()
Dim strPfad As String, strDatei As String
strPfad = ThisWorkbook.Path
strDatei = strPfad & Application.PathSeparator & "Sicherung.xlsm"
If Dir(strDatei)  "" Then
Application.EnableEvents = False 'evtl. erforderlich, um Ereignismakros _
in der zu öffnenden Datei zu unterdrücken.
Application.Workbooks.Open Filename:=strDatei
Application.EnableEvents = True 'erforderlich, wenn oben auf False gesetzt
Else
MsgBox "Datei ""Sicherung.xlsm"" nicht gefunden!"
End If
End Sub

Gruß
Franz

AW: Mappe per Makro aus anderer Mappe öffnen
30.03.2015 17:08:16
Fritz_W
Hallo Franz,
perfekt, ganz herzlichen Dank.
Ganz prima finde ich, dass Du den Code noch kommentierst!
Liebe Grüße
Fritz
Doch noch eine Frage:
Wie kann ich per Makro die Datei "Sicherung.xlsm" wieder im gleichen Ordner speichern?

Anzeige
AW: Mappe per Makro aus anderer Mappe öffnen
30.03.2015 17:12:08
Rudi
Hallo,
einfach
Workbooks("Sicherung.xlsm").Save
Gruß
Rudi

AW: Mappe per Makro aus anderer Mappe öffnen
30.03.2015 17:16:13
Fritz_W
Hallo Rudi,
vielen Dank.
Liebe Grüße
Fritz

Ergänzung
31.03.2015 09:23:04
Fritz_W
Hallo VBA Experten,
ich würde gerne das Makro von Franz um folgende Funktionen erweitern:
In der geöffneten Mappe "Sicherung.xlsm" befinden sich die Tabellen "Tabelle1" und "Tabelle2".
Gleichnamige Tabellenblätter befinden sich auch in der Mappe aus der ich per Mappe die Datei "Sicherung.xlsm" geöffnet habe.
Nun sollen gesicherte Daten aus "Sicherung.xlsm" in die andere Mappe "zurückgeschrieben" werden und zwar aus Tabelle1 der Zellbereich A2:N51 und aus Tabelle2 die Zellbereiche A14:A63, K14:K63, T14:Y63 jeweils in die gleichen Zellbereiche in den entsprechenden Tabellenblätter der "anderen" Mappe.
Es sollen jeweils nur die Werte (ohne Formatierung)übertragen werden.
Ich hoffe, mein Anliegen verständlich dargelegt zu haben und bedanke mich schon jetzt für Eure Unterstützung.
Liebe Grüße
Fritz

Anzeige
AW: Ergänzung
31.03.2015 11:13:11
fcs
Hallo Fritz,
den umgekehrten Weg hatten wir ja schon vor ein paar Tagen, wenn auch in einfacherer Form mit anderen Zellbereichen.
Gruß
Franz
Sub OeffnenSicherung()
Dim strPfad As String, strDatei As String
Dim arrRng, intB As Integer
Dim StatusCalc As Long
Dim wkbSicherung As Workbook, wksSicherung As Worksheet
Dim wkbZiel As Workbook, wksZiel As Worksheet
If MsgBox("Gesicherte Daten laden?", _
vbQuestion + vbOKCancel, _
"Laden gesicherte Daten") = vbCancel Then Exit Sub
Set wkbZiel = ThisWorkbook
strPfad = wkbZiel.Path
strDatei = strPfad & Application.PathSeparator & "Sicherung.xlsm"
If Dir(strDatei)  "" Then
'Makrobremsen lösen
With Application
.EnableEvents = False
.ScreenUpdating = False
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.StatusBar = "Laden der gesicherten Daten läuft"
End With
'Sicherungsdatei schreibgeschützt öffnen
Set wkbSicherung = Application.Workbooks.Open(Filename:=strDatei, ReadOnly:=True)
'Tabellenblätter abarbeiten
For Each wksZiel In wkbZiel.Worksheets
Select Case wksZiel.Name
Case "Tabelle1", "Tabelle2" 'Diese Tabellen aus Sicherung füllen
Set wksSicherung = wkbSicherung.Worksheets(wksZiel.Name)
'Bereiche festlegen aus denen gesicherte Daten übernommen werden sollen
Select Case wksZiel.Name
Case "Tabelle1"
arrRng = Array("A2:N51")
Case "Tabelle2"
arrRng = Array("A14:A63", "K14:K63", "T14:Y63")
End Select
Case Else
Set wksSicherung = Nothing
End Select
If Not wksSicherung Is Nothing Then
'Werte der Bereiche aus Sicherung übertragen
For intB = LBound(arrRng) To UBound(arrRng)
With wksSicherung
wksZiel.Range(arrRng(intB)).Value = .Range(arrRng(intB)).Value
End With
Next intB
Erase arrRng
End If
Next wksZiel
wkbZiel.Activate
'Sicherungsdatei wieder schliessen
wkbSicherung.Close savechanges:=False 'diese Zeile ggf. weglassen.
'Variablen aufäumen
Set wkbSicherung = Npthing: Set wksSicherung = Nothing
Set wkbZiel = Npthing: Set wksZiel = Nothing
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = StatusCalc
.StatusBar = False
End With
Else
MsgBox "Datei ""Sicherung.xlsm"" nicht gefunden!"
End If
End Sub

Anzeige
AW: Ergänzung
31.03.2015 11:32:51
Fritz_W
Hallo Franz,
vielen Dank für deine tolle Hilfe.
Mit Deinem Hinweis liegst Du richtig, die Datei wurde inzwischen geändert, die geänderten Zellbereiche konnte ich selbst anpassen, nur die Rücksicherung war eine (viel) zu hohe Hürde für mich.
Liebe Grüße
Fritz

AW: Ergänzung
31.03.2015 12:13:03
Fritz_W
Hallo Franz,
nach einigen Tests möchte ich mich hier noch einmal melden:
Dein Code ist einfach großartig, funktioniert wie gewünscht und ist umfassend kommentiert.
Das wollte ich Dir unbedingt noch einmal mitteilen.
Diese kompetente Hilfe hier, da möchte ich Dir und allen anderen Helfern ein großes Dankeschön und ein Riesenkompliment sagen.
LG
Fritz
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige