2017-01-11 2 views
0

In einer kleinen Powerpoint-Anwendung, die ich codiere, verwende ich die .FileDialog-Methode, um dem Benutzer zu ermöglichen, die Zieldatei für die App auszuwählen. Alles funktioniert gut, außer wenn der Benutzer den Dialog abbrechen möchte, indem er entweder auf die Abbrechen-Schaltfläche oder das X in der oberen rechten Ecke klickt, wird ein Fehler generiert und die Ausführung schlägt fehl.Powerpoint FileDialogbox-Probleme (VBA)

Also, was sind die PowerPoint-Fehlerfallen, wenn der Benutzer abbrechen möchte? Ich habe versucht, Excel VBA-Code ('On Error', vbCancel und If-Anweisungen) zu verwenden, um den Fehler ohne Glück zu fangen.

Irgendwelche Vorschläge?

+1

* ein Fehler wird generiert * ist eine sinnlose Problembeschreibung, es sei denn, Sie sagen uns, welcher spezifische Fehler auftritt. Welche Fehlermeldung erhalten Sie? Wenn der Benutzer auf Abbrechen klickt, wird 'vbCancel' zurückgegeben und es wird keine Fehlermeldung angezeigt, es sei denn, Sie zeigen selbst eine Fehlermeldung an. Außerdem gibt es hier viele Fragen zur Verwendung von FileDialog in VBA. Ob sie mit PowerPoint ausgezeichnet sind oder nicht, ist irrelevant, da VBA in allen Office-Apps gleich funktioniert. Durchsuchen Sie diese Seite nach '[vba] FileDialog', wo Sie leicht Beispiele finden [wie dieses] (http://stackoverflow.com/a/35626791/62576) –

+0

siehe meinen Kommentar in der anderen Antwort. Das offensichtliche Problem ist, dass die Verwendung der '.Show' -Methode direkt annahm, dass eine Datei ausgewählt werden musste (wodurch Laufzeitfehler 5: "Ungültiges Prozeduranrufargument" generiert wurde, wenn ich versuchte, die Aktion abzubrechen). Mit der If-Anweisung löste das Problem – c1802362

Antwort

0

Zeigen gibt einen Wert zurück.

Sub ShowFileDialog() 
Dim dlgOpen As FileDialog` 

Set dlgOpen = Application.FileDialog(Type:=msoFileDialogOpen) 

With dlgOpen 
    .AllowMultiSelect = True 
    If .Show Then 
     Dim I As Integer 
     For I = 1 To .SelectedItems.Count 
      Debug.Print .SelectedItems(I) 
     Next 
    Else 
     Debug.Print "User cancelled" 
    End If 
End With 

End Sub 
+0

mit dem Konstrukt 'If .Show ...' das Problem – c1802362

Verwandte Themen