Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1660to1664
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

Laufzeitfehler 1004 - Select-Metode des Sheets-O.

Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 13:23:27
Christoph
Hallo Zusammen,
erst einmal Danke für all die tollen Lösungen und Beispiele hier im Forum. Bisher habe ich auch immer was gefunden, aber dieses Mal komme ich einfach nicht weiter.
Problembeschreibung
Ich möchte alle sichtbaren Tabellenblätter als PDF drucken, was teilweise nur funktioniert. Bei einer bestimmten Anzahl kommt der Laufzeitfehler 1004
(Die Select-Methode des Sheets-Objektes konnte nicht ausgeführt werden)
Kurze Beschreibung der Excel-Liste:
- 15 Tabellenblätter, wovon 2 dauerhaft nicht sichtbar sind.
- Dazu kann eine unbekannte Anzahl an zusätzlichen Tabellenblättern kommen
Je nach Problem sind zusätzlich 3 weitere Tabellenblätter nicht sichtbar, genau dann kommt der Fehler.
Also
Fall 1: Thema A = 10 Sheets + x Sheets --> hier entsteht der Fehler
Fall 2: Thema B = 13 Sheets + x Sheets --> funktioniert ohne Probleme
Code
Sub PDF_Export()
Dim MyWorkbookName As String
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
Dim I As Integer
Dim e As Integer
If Tabelle13.Visible = True Then
'Fall 2
e = Sheets.Count - 2
Else
'Fall 1
e = Sheets.Count - 5
End If
ReDim arrSH(1 To e) As Variant
For I = 1 To e
arrSH(I) = I
Next
Sheets(arrSH).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets(arrSH(1)).Select
End Sub
Danke im Voraus und schönen Sonntag an alle
Christoph

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 13:36:10
Werner
Hallo Christoph,
meinst du so? Ist aber ungetestet.
Sub PDF_Export()
Dim MyWorkbookName As String
Dim I As Integer
Dim e As Integer
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
If Tabelle13.Visible = True Then
'Fall 2
e = Sheets.Count - 2
Else
'Fall 1
e = Sheets.Count - 5
End If
ReDim arrSH(1 To e) As Variant
For I = 1 To e
With Sheets(arrSH(I))
.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Next
End Sub
Gruß Werner
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 14:55:57
Christoph
Hallo Werner,
danke erst einmal für die schnelle Antwort.
Leider kommt jetzt ein Laufzeitfehler 9 - Index außerhalb des gültigen Bereichs.
.
.
.
ReDim arrSH(1 To e) As Variant
For I = 1 To e
With Sheets(arrSH(I))
.ExportAsFixedFormat _ 'Ab hier kommt dann der Fehler
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Next
Damit kann ich auch nicht so viel anfangen. Es sind ja alle Tabellenblätten sichtbar, auf die
das Programm zugreifen soll. Fehlt hier nicht die Select Operation?
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 15:38:24
Christoph
Hallo Zusammen, kleines Update.
Habe gerade gesehen, dass das Array arrSH(I) im besagten Fall ein Tabellenblatt anzieht
was ausgeblendet ist und darum kommt beim selektieren der Laufzeitfehler.
Anbei ein Bild:
Userbild
Kann mir zufällig jemand einen Tip geben, wie das sein kann und wie man das verhindert?
Viele Grüße
Christoph
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 16:14:42
onur
Warum so kompliziert?
For i= 1 to sheets.count
if sheets(i).Visible then
ActiveSheet.ExportAsFixedFormat _
usw
usw
usw
end if
next i

Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 16:41:42
Christoph
Hallo Onur,
danke erst einmal, aber wenn ich das so umsetze, dann wird immer nur das erste Tabellenblatt als PDF
gedruckt, ab dem zweiten kommt ein Laufzeitfehler. Dokument wurde nicht gespeichert - auch wenn ich es speicher, kommt der Fehler wieder. Wird mit der Schleife nicht von jedem Blatt eine PDF erstellt? Ziel ist es, alle Blätte als eine PDF zu drucken.
Ich habe den Fehler in meinem Code mitlerweile aber gefunden. Die Reihenfolge der Blätter entsprach nicht der chronologischen Reihenfolge. 10 und 11 waren vertauscht und da 11 ausgeblendet war, konnte das Blatt auch nicht selektiert werden.
Jetzt Stellt sich mir eine neue Frage:
Da andere Benutzer ausversehen auch die Blätter verschieben können, stellt sich mir die Frage, wie ich das programmtechnisch abfragen kann - wo wir wieder bei deinem Code wären. ;-)
Viele Grüße
Christoph
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 16:59:21
onur
Die User können Blätter verschieben oder sogar umbenennen wie sie wollen, dadurch ändert sich weder die interne Nummer (Sheets(i)) noch der interne Name (z.B.Tabelle1).
"ab dem zweiten kommt ein Laufzeitfehler"? Kann icht nicht verstehen - Hasst du den meine Korrektur (2.Antwort) gelesen?
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:10:42
Christoph
Du meinst wegen dem "Sheets(I).ExportAsFixedFormat", ja das habe ich gelesen und entsprechend geändert.
Es kommt trotzdem noch der Laufzeitfehler, nachdem er das erste Tabellenblatt als PDF gedruckt hat.
Fehlerbeschreibung:
Laufzeitfehler 1004 - Das Dokument wurde nicht gespeichert, das Dokument ist möglicherweise geöffnet, oder beim Speichern ist ein fehler ausgetreten.
Code:
Sub PDF_Export()
Dim MyWorkbookName As String
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
Dim I As Integer
For I = 1 To Sheets.Count
If Sheets(I).Visible Then
Sheets(I).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End If
Next I
End Sub

Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:14:16
onur
Mach mal aus
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
das
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)+trim(str(i))
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:27:23
Christoph
Das bringt auch keinen Erfolg.
Ich habe den Code von dir noch etwas verändert. Hinter MyWorkbookName habe ich die Variable I eingefügt. Jetzt ist der Laufzeitfehler weg, bekomme aber für jedes Tabellenblatt eine eigene PDF.
Code:
Sub PDF_Export()
Dim I As Integer
Dim MyWorkbookName As String
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5) + Trim(Str(I))
For I = 1 To Sheets.Count
If Sheets(I).Visible Then
Sheets(I).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName & I, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End If
Next I
End Sub

Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:31:41
onur
Mehrere Blätter als eine PDF drucken kann Excel auch nicht.
Du kannst aber z.B. "PDF-Creator" runterladen und damit ausdrucken.
Der kann alle Ausdrücke sammeln und wenn das Drucken beendet ist, diese zusammenfügen und als eine einzige Datei speichern.
https://de.pdfforge.org/pdfcreator/features
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:38:27
Christoph
Doch kann Excel... Markiere mal mehrere Blätter und gehe auf speichern unter als PDF.
Mein Code funktioniert ja, da ich über das Array die gewünschten selektiere und dann als
PDF exportiere. Was bei mir jetzt noch fehlt ist, dass ich Code so umschreibe, dass ein umbenennen und verschieben der Tabellenblätter keinen Einfluss mehr hat.
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 18:25:39
onur

Private Sub CommandButton1_Click()
Dim MyWorkbookName As String
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
Dim I As Integer
Dim ii
Dim arr
ReDim arr(1)
For I = 1 To Sheets.Count
If Sheets(I).Visible Then
ReDim Preserve arr(ii)
arr(ii) = Sheets(I).Name
ii = ii + 1
End If
Next I
Sheets(arr).Select
Sheets(1).Activate
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyWorkbookName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 18:32:37
onur
Statt
Private Sub CommandButton1_Click()
natürlich dein Makroname.
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
10.12.2018 22:32:21
christoph
Hi, ich bin jetzt erst dazu gekommen den Code zu testen. Wenn ich ihn richtig verstehe, müsste es eigentlich funktionieren, aber wenn ich eine Exceldatei mit 5 Blättern erstelle, das 4. und 5. Blatt vertausche und dann das 5. ausblende, dann kommt auch wieder der Laufzeitfehler.
Anbei die Testdatei mit deinem Code:
https://www.herber.de/bbs/user/126000.xlsm
Ich habe über meinen Code noch einmal nachgedacht: Wenn man die Position vom Tabellenblatt herausbekommt, dann könnte man das mit dem jeweiligen Sheet vergleichen. Mit Index habe ich schon versucht, bekomme aber nur die Nummer vom jeweiligen Sheet zurück.
Anbei mein Code:
Sub PDF_Export()
Dim MyWorkbookName As String
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5)
Dim I, e, z As Integer
If Tabelle13.Visible = True Then
e = Sheets.Count - 2      '-2 weil 2 Tabellenblätter immer ausgeblendet sind
Else
e = Sheets.Count - 5       '-5 weil 3 weitere Tabellenblätter nur manchmal sichtbar  _
sein sollen
End If
ReDim arrSH(1 To e) As Variant
z = 1
For I = 1 To e
For z = 1 To Sheets.Count
If Sheets(z).Index = I Then      'Bekommt man die Position vom Tabellenbaltt heraus? _
arrSH(I) = Sheets(z).Name
Exit For
End If
Next z
Next I
Sheets(arrSH).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Sheets(arrSH(1)).Select
End Sub

Danke schon einmal und schönen Abend noch
Christoph
Anzeige
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
10.12.2018 22:51:34
christoph
Dein Code geht doch ;-)
hier fehlte bloß das = true
If Sheets(I).Visible = True Then
Danke vielmals
Christoph
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:33:00
Christoph
Das bringt auch keinen Erfolg.
Ich habe den Code von dir noch etwas verändert. Hinter MyWorkbookName habe ich die Variable I eingefügt. Jetzt ist der Laufzeitfehler weg, bekomme aber für jedes Tabellenblatt eine eigene PDF.
Code:
Sub PDF_Export()
Dim I As Integer
Dim MyWorkbookName As String
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5) + Trim(Str(I))
For I = 1 To Sheets.Count
If Sheets(I).Visible Then
Sheets(I).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & MyWorkbookName & I, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End If
Next I
End Sub

AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:34:39
onur
Das muss innerhalb der Schleife stehen, sonst ändert sich der Name ja nicht.
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:35:04
onur
Das muss innerhalb der Schleife stehen, sonst ändert sich der Name ja nicht.
MyWorkbookName = ActiveWorkbook.Name
MyWorkbookName = Left(MyWorkbookName, Len(MyWorkbookName) - 5) + Trim(Str(I))
AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 17:37:09
onur
Und das reicht:
MyWorkbookName = Left(ActiveWorkbookName, Len(ActiveWorkbookName) - 5) + Trim(Str(I))

AW: Laufzeitfehler 1004 - Select-Metode des Sheets-O.
09.12.2018 16:20:13
onur
Natürlich:
sheets(i).ExportAsFixedFormat

statt
ActiveSheet.ExportAsFixedFormat

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige