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

Tabellenblätter per VBA archivieren

Tabellenblätter per VBA archivieren
28.05.2016 10:47:51
Fritz_W
Hallo VBA-Kundige,
ich bitte um Eure Unterstützung bei der Umsetzung folgenden Vorhabens.
Ich möchte bestimmte Tabellenblätter aus meiner geöffneten Mappe in der gleichzeitig geöffneten Mappe "Archiv_2016.xlsx" wie folgt archivieren:
Das Makro sollte zuerst prüfen, ob im aktiven Tabellenblatt die Formel in der Zelle AG4 einen anderen Wert als "" liefert. In diesem Fall enthält AG4 als Wert den Blattname eines Tabellenblatts dieser Arbeitsmappe. Dann sollte dieses Tabellenblatt in die gleichzeitig geöffnete Mappe "Archiv_2016" kopiert werden und die in der Kopie die im Tabellenblatt enthaltenen Formeln und ihre Werte ersetzt werden.
Sollte die Mappe "Archiv_2016" nicht geöffnet sein, soll das Makro nicht ausgeführt werden.
Ich hoffe, mein Anliegen nachvollziehbar dargelegt zu haben und bedanke mich im Voraus für Eure Hilfe.
mfg
Fritz

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter per VBA archivieren
28.05.2016 11:20:56
Nepumuk
Hallo,
so ok?
Option Explicit

Private Const ARCHIVE_FILE As String = "Archiv_2016.xlsx"

Public Sub Archivieren()
    Dim strWorksheetName As String
    Dim blnFoundWorksheet As Boolean, blnFoundWorkbook As Boolean
    Dim objWorksheet As Worksheet
    Dim objWorkbook As Workbook
    strWorksheetName = ActiveSheet.Range("AG4").Value
    If strWorksheetName <> "" Then
        For Each objWorksheet In ActiveWorkbook.Worksheets
            If objWorksheet.Name = strWorksheetName Then
                blnFoundWorksheet = True
                Exit For
            End If
        Next
        If Not blnFoundWorksheet Then
            Call MsgBox("Tabelle " & strWorksheetName & " nicht gefunden.", vbExclamation, "Hinweis")
            Exit Sub
        End If
        For Each objWorkbook In Workbooks
            If objWorkbook.Name = ARCHIVE_FILE Then
                blnFoundWorkbook = True
                Exit For
            End If
        Next
        If Not blnFoundWorkbook Then
            Call MsgBox("Mappe " & ARCHIVE_FILE & " ist nicht geöffnet.", vbExclamation, "Hinweis")
            Exit Sub
        End If
        Call objWorksheet.Copy(Before:=objWorkbook.Worksheets(1))
        With ActiveSheet
            .UsedRange.Value = .UsedRange.Value
        End With
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Tabellenblätter per VBA archivieren
28.05.2016 11:56:46
Fritz_W
Hallo Nepumuk,
vielen Dank für Deine Hilfe.
Beim Ausführen des Makros kommt - trotz geöffneter Datei "Archiv_2016.xlsx" der Hinweis, dass diese Datei nicht geöffnet ist.
Gruß
Fritz

AW: Tabellenblätter per VBA archivieren
28.05.2016 12:03:42
Nepumuk
Hallo,
kann ich nicht nachvollziehen denn bei meinem Test hat das einwandfrei geklappt.
Öffne mal nur die Datei Archiv_2016 geh in den VBA-Editor, gib im Direktfenster folgendes ein:
?Thisworkbook.Fullname
Kopiere die ausgegebene Zeile und zeig sie mir.
Gruß
Nepumuk

AW: Tabellenblätter per VBA archivieren
28.05.2016 12:26:17
Fritz_W
Hallo Nepomuk,
?Thisworkbook.Fullname
H:\Fritz\Archiv_2016.xlsx
Gruß
Fritz

Anzeige
AW: Tabellenblätter per VBA archivieren
28.05.2016 12:29:26
Nepumuk
Hallo,
kannst du eine Kopie der Mappe mit einer leeren Tabelle drin hochladen?
Gruß
Nepumuk

AW: Tabellenblätter per VBA archivieren
28.05.2016 13:15:54
Nepumuk
Hallo,
funktioniert einwandfrei bis auf die Tatsache dass der Tabellenname nicht in AG4 sondern in AG1 steht.
Gruß
Nepumuk

AW: Tabellenblätter per VBA archivieren
28.05.2016 13:20:06
Fritz_W
Hallo Nepumuk,
du hast Recht, das war mein Fehler, tut mir aufrichtig leid.
Ganz herzlichen Dank.
Gruß
Fritz

AW: Tabellenblätter per VBA archivieren @Nepumuk
28.05.2016 15:10:58
Fritz_W
Hallo Nepumuk,
nachträglich hätte ich nun doch noch einen Änderungswunsch und würde mich freuen, wenn Du das noch einbauen könntest:
Der Blattname der Kopie die in der Mappe "Archiv_2016.xlsx" abgelegt wird, sollte - sofern in der Zelle R1 des kopierten Blatts ein von "" abweichender Wert/Text enthalten ist - entsprechend diesem Wert umbenannt werden.
Viele Grüße
Fritz

Anzeige
AW: Tabellenblätter per VBA archivieren @Nepumuk
28.05.2016 15:22:46
Nepumuk
Hallo,
so?
Option Explicit

Private Const ARCHIVE_FILE As String = "Archiv_2016.xlsx"

Public Sub Archivieren()
    Dim strWorksheetName As String
    Dim blnFoundWorksheet As Boolean, blnFoundWorkbook As Boolean
    Dim objWorksheet As Worksheet
    Dim objWorkbook As Workbook
    strWorksheetName = ActiveSheet.Range("AG4").Value
    If strWorksheetName <> "" Then
        For Each objWorksheet In ActiveWorkbook.Worksheets
            If objWorksheet.Name = strWorksheetName Then
                blnFoundWorksheet = True
                Exit For
            End If
        Next
        If Not blnFoundWorksheet Then
            Call MsgBox("Tabelle " & strWorksheetName & " nicht gefunden.", vbExclamation, "Hinweis")
            Exit Sub
        End If
        For Each objWorkbook In Workbooks
            If objWorkbook.Name = ARCHIVE_FILE Then
                blnFoundWorkbook = True
                Exit For
            End If
        Next
        If Not blnFoundWorkbook Then
            Call MsgBox("Mappe " & ARCHIVE_FILE & " ist nicht geöffnet.", vbExclamation, "Hinweis")
            Exit Sub
        End If
        Call objWorksheet.Copy(Before:=objWorkbook.Worksheets(1))
        With ActiveSheet
            .UsedRange.Value = .UsedRange.Value
            If .Range("R1").Value <> "" Then .Name = .Range("R1").Value
        End With
    End If
End Sub

Gruß
Nepumuk

Anzeige
AW: Tabellenblätter per VBA archivieren @Nepumuk
28.05.2016 15:31:41
Fritz_W
Hallo Nepumuk,
funktioniert wie gewünscht.
Ganz herzlichen Dank.
Viele Grüße
Fritz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige