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

On error in If-Then -Schleife

On error in If-Then -Schleife
27.07.2017 19:27:13
Leoooo
Hallo,
ich habe eine If-Then-Schleife die mir bei Drücken eines Buttons eine PDF auf Deutsch oder auf Englisch öffnet. Welche Sprache die PDF hat wird durch die vorherige Auswahl der Sprache entschieden. Die PDF wird aus einem Excel-Worksheet erstellt.
Ich drücke den CommandButton und die PDF wird geöffnet. Drücke ich den Button jetzt erneut bekomme ich einen Fehler. Deswegen habe ich den On Error Befehl eingebaut. Dieser Befehl funktioniert aber nur einmal, beim zweiten Mal schließt sich das Warnfenster nicht mehr.
Hier der Code:
Private Sub CommandButton4_Click() 'Öffne "Hilfe-PDF"
Col = Application.Match(Sprache.ComboBox1, Worksheets("Sprachen").Rows("1"), 0)
On Error GoTo Fehler
If Col = 3 Then
Application.PrintCommunication = False
With ThisWorkbook.Worksheets("Erklärungssheet").PageSetup
.Orientation = xlPortrait
.Zoom = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With Worksheets("Erklärungssheet")
.Range("A1:D39").ExportAsFixedFormat Type:=xlTypePDF, filename:="Erklärungen & Beispiele. _
pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False,  _
OpenAfterPublish:=True
End With
Else
Application.PrintCommunication = False
With ThisWorkbook.Worksheets("Erklärungssheet_english").PageSetup
.Orientation = xlPortrait
.Zoom = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With Worksheets("Erklärungssheet_english")
.Range("A1:D39").ExportAsFixedFormat Type:=xlTypePDF, filename:="Explanations & Examples. _
pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False,  _
OpenAfterPublish:=True
End With
End If
Exit Sub
Fehler:
If MsgBox("The PDF file is already open! Please close the file first, then press OK to continue. _
_
") = vbOK Then
Resume
End If
End Sub
Kann mir jemand sagen wo mein Fehler liegt?

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

Betreff
Datum
Anwender
Anzeige
AW: On error in If-Then -Schleife
27.07.2017 20:27:53
fcs
Hallo Leo,
keine Ahnung ich hab das Makro ein wenig getestet.
Es lief bei mir WindowsVista/MS Office 2010 ohne Probleme auch wiederholt mit und ohne das PDF-File vorher zu schliessen.
Ich hab die Fehler-Behandlung etwas modifiziert,so dass auch ander Fehler eine Meldung liefern.
Zusätzlich hab die Deklaration der Variablen "Col" eingefügt Rows("1") die Anführungszeichen rausgenommen - Zeilennummern sind nummerisch auch wenn der VBA-Compiler hier intern das korrigiert sollte man die Parameter im üblichen Format angeben.
Gruß
Franz
'getestet und leicht modofiziert unter Excel 2010
Private Sub CommandButton4_Click() 'Öffne "Hilfe-PDF"
Dim Col
On Error GoTo Fehler
Col = Application.Match(Sprache.ComboBox1, Worksheets("Sprachen").Rows(1), 0)
If Col = 3 Then
Application.PrintCommunication = False
With ThisWorkbook.Worksheets("Erklärungssheet").PageSetup
.Orientation = xlPortrait
.Zoom = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With Worksheets("Erklärungssheet")
.Range("A1:D39").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="Erklärungen & Beispiele.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Else
Application.PrintCommunication = False
With ThisWorkbook.Worksheets("Erklärungssheet_english").PageSetup
.Orientation = xlPortrait
.Zoom = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
With Worksheets("Erklärungssheet_english")
.Range("A1:D39").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="Explanations & Examples.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
End If
Fehler:
With Err
Select Case .Number
Case 0
Case -2147018887 'PDFDatei konnte nicht erstellt werden
If MsgBox("The PDF file is already open!" & vbLf _
& "Please close the file first, then press OK to continue.", _
vbOKCancel, "Fehler - Erstellen PDF") = vbOK Then
Resume
End If
Case Else
Debug.Print .Number
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbOKOnly, "Fehler-Makro CommandButton4"
End Select
End With
End Sub

Anzeige
AW: On error in If-Then -Schleife
28.07.2017 12:59:28
Leoooo
Hallo Franz,
danke für die schnelle Antwort!
Der Code funktioniert allerdings noch nicht bei mir. Immer wenn ich die PDF bereits geöffnet habe und sie dann erneut öffnen will bekomme ich folgende Fehlermeldung:
"Fehler-Nr.: -2147417848 - Automatisierungsfehler - Das aufgerufene Objekt wurde von den Clients getrennt."
Danach hängt sich Excel auf und wird beendet. Woran könnte das liegen?
Viele Grüße
AW: On error in If-Then -Schleife
28.07.2017 13:40:23
Rudi
Hallo,
evtl. so?
Private Sub CommandButton4_Click() 'Öffne "Hilfe-PDF"
Dim Col As Long, strFileName As String, wks As Worksheet
Col = Application.Match(Sprache.ComboBox1, Worksheets("Sprachen").Rows(1), 0)
If Col = 3 Then
Set wks = ThisWorkbook.Worksheets("Erklärungssheet")
strFileName = "Erklärungen & Beispiele.pdf"
Else
Set wks = "Erklärungssheet_english"
strFileName = "Explanations & Examples.pdf"
End If
If Not IsFileOpen(strFileName) Then
Application.PrintCommunication = False
With wks
With .PageSetup
.Orientation = xlPortrait
.Zoom = True
.FitToPagesTall = 1
.FitToPagesWide = 1
End With
.Range("A1:D39").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFileName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
Else
MsgBox "Datei bereits geöffnet", , "gebe bekannt..."
End If
End Sub
Function IsFileOpen(strFullPathFileName As String) As Boolean
'// VBA version to check if File is Open
'// We can use this for ANY FILE not just Excel!
'// Ivan F Moala
'// http://www.xcelfiles.com
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = FreeFile
Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function
Gruß
Rudi
Anzeige
AW: On error in If-Then -Schleife
28.07.2017 14:31:13
Leoooo
Hi Rudi,
der Code funktioniert super. Vielen Dank!
Grüße
Leonie

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige