Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro auf ausgeblendete Tabellenblätter ausführen

Forumthread: Makro auf ausgeblendete Tabellenblätter ausführen

Makro auf ausgeblendete Tabellenblätter ausführen
26.06.2018 16:56:34
Dennis
Guten Tag liebes Forum!
Bitte um Hilfe, komme einfach nicht weiter.
Habe in einer Datei 5 Tabellen. 4 davon (Tabelle2,3,4,5) habe mittels VBA ausgeblendet (2-xlSheetVeryHidden) und das Projekt mit Kennwort geschützt.
Jetzt habe ich die Tabelle1 von wo aus die Makros nicht mehr funktionieren.
Modul3
Sub PDF_Speichern()
Dim pdfName As String
With Sheets("Angebot")
pdfName = Application.GetSaveAsFilename(Environ("USERPROFILE") & "TKP" & _
.Range("B14") & .Range("B6") & .Range("B8") & .Range("B6") & .Range("B3") & ". _
pdf", "PDF-Dateien (*.pdf), *.pdf")
End With
If pdfName = "Falsch" Then Exit Sub
Sheets(Array("Angebot")).Select
Sheets("Angebot").Activate
ChDir "C:\Users\dmatthies\Desktop"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Angebot").Select
End Sub
Modul4
Option Explicit
Sub PDF_MAIL()
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
mePDFD = ThisWorkbook.Path & "\testPDF.pdf"
Sheets("Angebot").Copy
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=mePDFD, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
.Close False
End With
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Configurator").Range("D7").Value                     'Empfaenger
.Subject = ThisWorkbook.Sheets("Configurator").Range("D21").Value            'Betreffzeile
.body = ThisWorkbook.Sheets("Configurator").Range("C74").Value                 'Inhalt
.Attachments.Add mePDFD
.display
'.Send
Kill mePDFD
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub
Gibt es hierfür eine Lösung?
Vielen Dank im Voraus!
Gruß
Dennis
Anzeige

41
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
26.06.2018 16:59:05
Hajo_Zi
Hallo Dennis,
Select, Activate usw. ist in VBA zu 99,8% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.
Hinweise zu select usw. Hajo-Excel.de
Hinweise zu select usw. Online-Excel.de
Hinweise zu select usw. Online-Excel.de
Der Cursor ist kein Hund, der überall rum geführt werden muss.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
26.06.2018 18:05:17
Nepumuk
Hallo Dennis,
ein Beispiel für das erste Makro. Das zweite kannst du nach diesem Muster anpassen.
Sub PDF_Speichern()
    
    Dim pdfName As Variant
    
    With Worksheets("Angebot")
        
        pdfName = Application.GetSaveAsFilename(Environ("USERPROFILE") & "TKP" & _
            .Range("B14").Text & .Range("B6").Text & .Range("B8").Text & _
            .Range("B6").Text & .Range("B3").Text & ".pdf", "PDF-Dateien (*.pdf), *.pdf")
        
        If TypeName(pdfName) = "String" Then
            
            Application.ScreenUpdating = False
            .Visible = xlSheetVisible
            
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, Quality:= _
                xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=True
            
            .Visible = xlSheetVeryHidden
            Application.ScreenUpdating = False
            
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
27.06.2018 09:12:36
Dennis
Vielen Dank!
Ist das erste mal das ich mit Makros arbeite.
Werde gleich ausprobieren.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
27.06.2018 13:55:04
Nepumuk
Hallo Denis,
teste mal:
Public Sub PDF_MAIL()
    Dim strPDFD As String
    Dim objOutApp As Object, objMessage As Object
    
    strPDFD = ThisWorkbook.Path & "\testPDF.pdf"
    
    With Worksheets("Angebot")
        .Visible = xlSheetVisible
        Call .ExportAsFixedFormat(Type:=xlTypePDF, Filename:=strPDFD, Quality:=xlQualityStandard, _
            IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False)
        .Visible = xlSheetVeryHidden
    End With
    
    Set objOutApp = CreateObject("Outlook.Application")
    Set objMessage = objOutApp.CreateItem(0)
    With objMessage
        .To = ThisWorkbook.Worksheets("Configurator").Range("D7").Value 'Empfaenger
        .Subject = ThisWorkbook.Worksheets("Configurator").Range("D21").Value 'Betreffzeile
        .body = ThisWorkbook.Worksheets("Configurator").Range("C74").Value 'Inhalt
        Call .Attachments.Add(Source:=strPDFD)
        Call .Display
        'Call .Send
        Call Kill(PathName:=strPDFD)
    End With
    Set objOutApp = Nothing
    Set objMessage = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 09:59:06
Dennis
Guten Morgen Nepumuk,
vielen Dank für deine Hilfe.
Habe bei diesem Code einen Laufzeitfehler 446: Objekt unterstützt keine benannte Argumente.
Was kann das sein?
Beim debuggen markiert er folgende Zeile: Call .Attachments.Add(Source:=strPDFD)
Gruß
Dennis
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 10:37:25
Nepumuk
Hallo Dennis,
dann versuch es mal so:
Call .Attachments.Add(strPDFD)

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 10:41:52
Dennis
YES!!!
DANKE!!! DANKE!!! DANKE!!!
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 10:53:22
Dennis
Habe gerade gemerkt das der Autofilter sich auch nicht aktualisiert.
Habe den Code im Modul:
Private Sub Worksheet_Activate()
Selection.AutoFilter Field:=8, Criteria1:="="
End Sub
und habe versucht mit dem:
Private Sub Worksheet_Activate()
.Visible = xlSheetVisible
Selection.AutoFilter Field:=8, Criteria1:="="
.Visible = xlSheetVeryHidden
End Sub
Leider aktualisiert sich trotzdem nicht. Oder mache ich was falsch?
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 13:16:08
Nepumuk
Hallo Dennis,
versuch es mal so (eventuell musst du die Zeile in der sich der AutoFilter befindet anpassen):
Public Sub PDF_MAIL()
    Dim strPDFD As String
    Dim objOutApp As Object, objMessage As Object
    
    strPDFD = ThisWorkbook.Path & "\testPDF.pdf"
    
    With Worksheets("Angebot")
        .Visible = xlSheetVisible
        Call .Rows(1).AutoFilter(Field:=8, Criteria1:="=") '**************Neu**************
        Call .ExportAsFixedFormat(Type:=xlTypePDF, Filename:=strPDFD, _
            Quality:=xlQualityStandard, IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False)
        .Visible = xlSheetVeryHidden
    End With
    
    Set objOutApp = CreateObject("Outlook.Application")
    Set objMessage = objOutApp.CreateItem(0)
    With objMessage
        .To = ThisWorkbook.Worksheets("Configurator").Range("D7").Value 'Empfaenger
        .Subject = ThisWorkbook.Worksheets("Configurator").Range("D21").Value 'Betreffzeile
        .body = ThisWorkbook.Worksheets("Configurator").Range("C74").Value 'Inhalt
        Call .Attachments.Add(Source:=strPDFD)
        Call .Display
        'Call .Send
        Call Kill(PathName:=strPDFD)
    End With
    Set objOutApp = Nothing
    Set objMessage = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 14:33:06
Dennis
Hallo Nepumuk,
habe den Code eingefügt und die Spalte angepasst. Laufzeitfehler 446 und markiert diese Zelle: Call .Attachments.Add(Source:=strPDFD)
Public Sub PDF_MAIL()
Dim strPDFD As String
Dim objOutApp As Object, objMessage As Object
strPDFD = ThisWorkbook.Path & "\testPDF.pdf"
With Worksheets("Angebot")
.Visible = xlSheetVisible
Call .Rows(1).AutoFilter(Field:=6, Criteria1:="=") '**************Neu**************
Call .ExportAsFixedFormat(Type:=xlTypePDF, Filename:=strPDFD, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False)
.Visible = xlSheetVeryHidden
End With
Set objOutApp = CreateObject("Outlook.Application")
Set objMessage = objOutApp.CreateItem(0)
With objMessage
.To = ThisWorkbook.Worksheets("Configurator").Range("D7").Value 'Empfaenger
.Subject = ThisWorkbook.Worksheets("Configurator").Range("D21").Value 'Betreffzeile
.body = ThisWorkbook.Worksheets("Configurator").Range("C74").Value 'Inhalt
Call .Attachments.Add(Source:=strPDFD)
Call .Display
'Call .Send
Call Kill(PathName:=strPDFD)
End With
Set objOutApp = Nothing
Set objMessage = Nothing
End Sub

Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 14:36:43
Nepumuk
Hallo Dennis,
ist "alter Code". So geht's:
Call .Attachments.Add(strPDFD)

Gruß
Nepumuk
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:17:23
Dennis
Leider aktualisiert er nicht den Filter. Habe den Filter in der Zelle F24 stehen.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:20:16
Nepumuk
Hallo Dennis,
in Zeile 24 befinden sich die Filterpfeile?
Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:24:16
Dennis
ja richtig.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:26:27
Nepumuk
Hallo Dennis,
hast du dann die Zeile so angepasst?
Call .Rows(24).AutoFilter(Field:=8, Criteria1:="=") 

Gruß
Nepumuk
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:32:23
Dennis
Ja, aktualisiert auch nicht.
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 15:33:59
Nepumuk
Hallo Dennis,
dann kann ich dir ohne Mustermappe auch nicht weiterhelfen.
Gruß
Nepumuk
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 16:47:38
Dennis
Hallo Nepumuk,
konnte über den File-Upload nicht hochladen. Deswegen über Dropbox:
https://www.dropbox.com/s/xzkc2q1p2fhw4by/Test.xlsm?dl=0
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 16:58:20
Nepumuk
Hallo Dennis,
die Spalte H (Field:=8) ist leer. Die Liste hat nur 5 Spalten.
Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 17:03:39
Dennis
Sobald du im konfigurator eine Position im drop-down löschst, erscheint in der Spalte H eine 1. Du kannst dort auch die Formel sehen.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 17:10:55
Nepumuk
Hallo Dennis,
ich finde die Formel in Spalte F (6).
Gruß
Nepumuk
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 17:31:59
Dennis
Stimmt ich habe die Struktur geändert und vergessen es im Code zu ändern. Sorry. Werde morgen früh, sobald ich am Rechner bin, ausprobieren.
Nochmal DANKE!
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 08:56:40
Dennis
Guten Morgen Nepumuk,
habe den Code entsprechend angepasst auf F25 im Taballenblatt Angebot, wo der Filter gesetzt ist.
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="=")
Leider aktualisiert sich der Filter trotzdem nicht.
Gruß
Dennis
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 09:25:03
Nepumuk
Hallo Dennis,
wenn du die nichtleeren Zellen filtern willst, dann so:
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="")

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 10:26:19
Dennis
Es aktualisiert trotzdem nicht.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 12:38:58
Nepumuk
Hallo Dennis,
bei mir schon.
Gruß
Nepumuk
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 13:57:43
Dennis
jetzt sehe ich das auch. Er macht es nur beim Knopf pdf als email versenden und wenn ich pdf speichern drücke passiert nichts. und er sortiert die leeren Felder aus, soll aber die einsen ausblenden.
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 14:03:02
Nepumuk
Hallo Dennis,
so schon:
Sub PDF_Speichern()
    
    Dim pdfName As Variant
    
    With Worksheets("Angebot")
        pdfName = Application.GetSaveAsFilename(Environ("USERPROFILE") & "TKP" & _
            .Range("B14").Text & .Range("B6").Text & .Range("B8").Text & _
            .Range("B6").Text & .Range("B3").Text & ".pdf", "PDF-Dateien (*.pdf), *.pdf")
        
        If TypeName(pdfName) = "String" Then
            
            Application.ScreenUpdating = False
            .Visible = xlSheetVisible
            
            Call .Rows(25).AutoFilter(Field:=6, Criteria1:="<>")
            
            Call .ExportAsFixedFormat(Type:=xlTypePDF, Filename:=pdfName, Quality:= _
                xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=True)
            
            .Visible = xlSheetVeryHidden
            Application.ScreenUpdating = False
            
        End If
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 14:07:22
Dennis
wie kriege ich die ein ausgefiltert? So?
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="1")
Es klappt nicht (
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 14:16:27
Nepumuk
Hallo Dennis,
klappt zu 100% bei mir. Du kannst ja noch ein = reinsetzten:
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="=1")

Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 14:42:22
Dennis
also bei mir ist es egal welchen Code ich einfüge, er blende die leeren Zellen aus und läßt die mit der 1 da.
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="=1")
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="")
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 14:44:49
Nepumuk
Hallo Dennis,
ich glaube, wir reden aneinander vorbei. Was genau soll ausgefiltert werden? Alle 1en? Das sind bei mir aber nur zwei Zeilen, alles andere bleibt dann sichtbar.
Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 15:24:09
Dennis
Ja alle 1en sollen ausgeblendet werden. Eine Eins erscheint in der Spalte, sobald du im konfigurator eine Position löschst.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 15:26:23
Nepumuk
Hallo Dennis,
dann so:
Call .Rows(25).AutoFilter(Field:=6, Criteria1:="<>1")

Und sorry für das Missverständnis.
Gruß
Nepumuk
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausführen
29.06.2018 16:48:32
Dennis
Vielen Dank für deine Geduld und professionelle Hilfe.
Bin gerade unterwegs, werde erst montags testen können.
Wird sicher funktionieren.
Schönes Wochenende.
AW: Makro auf ausgeblendete Tabellenblätter ausführen
28.06.2018 16:49:16
Dennis
ach ja Passwort ist überall: blau
AW: Makro auf ausgeblendete Tabellenblätter ausführen
27.06.2018 10:24:13
Dennis
Guten Morgen Nepumuk,
dein Code funktioniert einwandfrei. Vielen Dank!
Leider bekomme ich es mit dem zweiten code nicht hin.
Ich sehe hier auch kein Select oder Activate. Kannst du nochmal helfen?
Option Explicit
Sub PDF_MAIL()
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
mePDFD = ThisWorkbook.Path & "\testPDF.pdf"
Sheets("Angebot").Copy
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=mePDFD, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Configurator").Range("D7").Value                     'Empfaenger
.Subject = ThisWorkbook.Sheets("Configurator").Range("D21").Value            'Betreffzeile
.body = ThisWorkbook.Sheets("Configurator").Range("C74").Value                 'Inhalt
.Attachments.Add mePDFD
.display
'.Send
Kill mePDFD
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausfüh
27.06.2018 10:49:01
Daniel
Hi
ist das Blatt "Angebot" ausgeblendet?
dann funktioniert das Sheets("Angebot").Copy nicht, weil du damit dieses Blatt in eine neue Datei übernimmst und es dort das einzige Tabellenblatt ist. In jeder Datei muss aber mindestens ein sichtbares Blatt vorhanden sein.
der Workaround wäre hier, das Blatt temporär einzublenden, bevor du es kopierst
Dim Sichtbar as Long
Sichtbar = Sheets("Angebot").Visible
Sheets("Angebot").Copy
Sheets("Angebot").Visible = Sichtbar
Gruß Daniel
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausfüh
27.06.2018 11:33:10
Dennis
Hallo Daniel,
hier nochmal meine erste Nachricht:
Habe in einer Datei 5 Tabellen. 4 davon (Tabelle2,3,4,5) habe mittels VBA ausgeblendet (2-xlSheetVeryHidden) und das Projekt mit Kennwort geschützt.
Habe dein Code eingefügt. Bekomme leider Fehlermeldung: Fehler beim Kompilieren: Variable nicht definiert
Option Explicit

Sub PDF_MAIL()
Dim mePDFD As String Dim MyOutApp As Object, MyMessage As Object mePDFD = ThisWorkbook.Path & "\testPDF.pdf" Sichtbar = Sheets("Angebot").Visible Sheets("Angebot").Copy Sheets("Angebot").Visible = Sichtbar With ActiveWorkbook .ExportAsFixedFormat Type:=xlTypePDF, Filename:=mePDFD, Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=True End With Set MyOutApp = CreateObject("Outlook.Application") Set MyMessage = MyOutApp.CreateItem(0) With MyMessage .To = ThisWorkbook.Sheets("Configurator").Range("D7").Value 'Empfaenger .Subject = ThisWorkbook.Sheets("Configurator").Range("D21").Value 'Betreffzeile .body = ThisWorkbook.Sheets("Configurator").Range("C74").Value 'Inhalt .Attachments.Add mePDFD .display '.Send Kill mePDFD End With Set MyOutApp = Nothing Set MyMessage = Nothing End Sub
Anzeige
AW: Makro auf ausgeblendete Tabellenblätter ausfüh
27.06.2018 13:47:28
Dennis
PS. der Autofilter in der Tabelle3 funktioniert ebenfalls nicht.
Tabelle3 ist auch versteckt und geschützt.
Private Sub Worksheet_Activate()
Selection.AutoFilter Field:=8, Criteria1:="="
End Sub

AW: Makro auf ausgeblendete Tabellenblätter ausfüh
27.06.2018 13:54:37
Dennis
Habe den Code nochmal wie du ihn angegeben hast eingefügt. Hatte vergessen Dim Sichtbar As Long zu setzen. Aber bekomme trotzdem eine Fehlermeldung: Laufzeitfehler 1004: Die Copy-Methode des Worksheet-Objektes konnte nicht aufgeführt werden.
Option Explicit
Sub PDF_MAIL()
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
Dim Sichtbar As Long
mePDFD = ThisWorkbook.Path & "\testPDF.pdf"
Sichtbar = Sheets("Angebot").Visible
Sheets("Angebot").Copy
Sheets("Angebot").Visible = Sichtbar
With ActiveWorkbook
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=mePDFD, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = ThisWorkbook.Sheets("Configurator").Range("D7").Value                     'Empfaenger
.Subject = ThisWorkbook.Sheets("Configurator").Range("D21").Value            'Betreffzeile
.body = ThisWorkbook.Sheets("Configurator").Range("C74").Value                 'Inhalt
.Attachments.Add mePDFD
.display
'.Send
Kill mePDFD
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Makros für ausgeblendete Tabellenblätter in Excel nutzen


Schritt-für-Schritt-Anleitung

  1. Zugriff auf das ausgeblendete Tabellenblatt: Um in Excel VBA auf ausgeblendete Tabellenblätter zuzugreifen, kannst du den Sichtbarkeitsstatus ändern. Hier ein Beispiel, um ein Blatt sichtbar zu machen:

    Sheets("Angebot").Visible = xlSheetVisible
  2. Makro erstellen: Öffne den VBA-Editor (Alt + F11) und füge ein neues Modul hinzu, um dein Makro zu erstellen. Hier ist ein Beispiel für ein Makro, das ein PDF aus einem ausgeblendeten Blatt exportiert:

    Sub PDF_Speichern()
       Dim pdfName As String
       With Sheets("Angebot")
           .Visible = xlSheetVisible
           pdfName = Application.GetSaveAsFilename(Environ("USERPROFILE") & "\Desktop\Angebot.pdf", "PDF-Dateien (*.pdf), *.pdf")
           If pdfName <> "Falsch" Then
               .ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, Quality:=xlQualityStandard
           End If
           .Visible = xlSheetVeryHidden
       End With
    End Sub
  3. Makro ausführen: Schließe den VBA-Editor und führe das Makro über die Entwicklertools oder eine Schaltfläche in der Excel-Oberfläche aus.


Häufige Fehler und Lösungen

  • Fehler: Excel kann Makro in einer ausgeblendeten Arbeitsmappe nicht bearbeiten: Dieser Fehler tritt auf, wenn du versuchst, auf ein ausgeblendetes Blatt zuzugreifen, ohne es vorher sichtbar zu machen. Stelle sicher, dass du das Blatt mit .Visible = xlSheetVisible sichtbar machst.

  • Laufzeitfehler 446: Dies kann passieren, wenn du versuchst, ein nicht vorhandenes Objekt anzusprechen. Überprüfe die Namen der Blätter und ob sie korrekt geschrieben sind.

  • Filter funktioniert nicht: Wenn der Autofilter nicht aktualisiert wird, überprüfe, ob du die richtige Zeile für den Filter angegeben hast. Stelle sicher, dass sich die Filterpfeile in der angegebenen Zeile befinden.


Alternative Methoden

Eine andere Methode, um auf ausgeblendete Tabellenblätter zuzugreifen, ist das temporäre Einblenden des Blattes, bevor du es kopierst. Hier ein Beispiel:

Dim Sichtbar As Long
Sichtbar = Sheets("Angebot").Visible
Sheets("Angebot").Visible = xlSheetVisible
Sheets("Angebot").Copy
Sheets("Angebot").Visible = Sichtbar

Diese Technik ist besonders nützlich, wenn du ein Makro in einer ausgeblendeten Arbeitsmappe nutzen möchtest.


Praktische Beispiele

  1. PDF speichern und per E-Mail versenden: Um ein PDF aus einem ausgeblendeten Blatt zu erstellen und es per E-Mail zu versenden, kannst du den folgenden Code verwenden:

    Sub PDF_MAIL()
       Dim strPDFD As String
       Dim objOutApp As Object, objMessage As Object
       strPDFD = ThisWorkbook.Path & "\testPDF.pdf"
       With Worksheets("Angebot")
           .Visible = xlSheetVisible
           .ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPDFD
           .Visible = xlSheetVeryHidden
       End With
       Set objOutApp = CreateObject("Outlook.Application")
       Set objMessage = objOutApp.CreateItem(0)
       With objMessage
           .To = ThisWorkbook.Sheets("Configurator").Range("D7").Value
           .Subject = "Dein Angebot"
           .Body = "Hier ist dein Angebot als PDF."
           .Attachments.Add strPDFD
           .Display
       End With
       Set objOutApp = Nothing
       Set objMessage = Nothing
    End Sub
  2. AutoFilter auf ausgeblendeten Zellen: Bei Verwendung des Autofilters auf einem ausgeblendeten Blatt, stelle sicher, dass du das Blatt vorher sichtbar machst, bevor du den Filter anwendest:

    With Worksheets("Angebot")
       .Visible = xlSheetVisible
       .Rows(25).AutoFilter Field:=6, Criteria1:="=1"
       .Visible = xlSheetVeryHidden
    End With

Tipps für Profis

  • Verwende Option Explicit zu Beginn deiner Module, um sicherzustellen, dass alle Variablen deklariert sind und um Fehler bei der Ausführung zu vermeiden.
  • Nutze Application.ScreenUpdating = False, um Flackern beim Ausführen von Makros zu vermeiden. Vergiss nicht, es am Ende wieder auf True zu setzen.
  • Wenn du oft mit ausgeblendeten Symbolen oder Blättern arbeitest, erstelle benutzerdefinierte Schaltflächen in der Taskleiste, um schnell zwischen sichtbaren und ausgeblendeten Blättern zu wechseln.

FAQ: Häufige Fragen

1. Wie kann ich ein ausgeblendetes Tabellenblatt in Excel anzeigen?
Verwende den Befehl Sheets("Blattname").Visible = xlSheetVisible.

2. Was bedeutet xlSheetVeryHidden?
xlSheetVeryHidden ist ein Status, bei dem das Blatt nicht einmal über die Benutzeroberfläche sichtbar gemacht werden kann, es kann nur über VBA sichtbar gemacht werden.

3. Warum funktioniert der Autofilter nicht auf einem ausgeblendeten Blatt?
Der Autofilter benötigt ein sichtbares Blatt, um angewendet zu werden. Stelle sicher, dass das Blatt sichtbar ist, bevor du den Filter anwendest.

4. Wie kann ich Makros in einer ausgeblendeten Arbeitsmappe bearbeiten?
Du kannst das Blatt zuerst sichtbar machen, indem du den Sichtbarkeitsstatus änderst, bevor du Änderungen vornimmst.

5. Was kann ich tun, wenn ich Laufzeitfehler beim Zugriff auf ausgeblendete Blätter erhalte?
Überprüfe, ob das Blatt sichtbar ist, und stelle sicher, dass du die korrekten Objektnamen verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige