Office: (Office 2011 Mac) VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben

Helfe beim Thema VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Liebe Excel/VBA-Community, ich versuche mit wachsender Verzweiflung ein Makro zu erstellen, das folgende Funktionen erfüllt: 1. Beim Abspielen... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von MikroMeso, 7. Juli 2016.

  1. MikroMeso Neuer User

    VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben


    Liebe Excel/VBA-Community,

    ich versuche mit wachsender Verzweiflung ein Makro zu erstellen, das folgende Funktionen erfüllt:

    1. Beim Abspielen des Makros wird eine PDF erzeugt (funktioniert)
    2. Der Dateiname der PDF wird den Zellen C1-3 entnommen (funktioniert)
    3. Dabei Prüfung, ob C1-3 ausgefüllt wurden: Wenn nicht, Fehlermeldung (funktioniert)
    4. Die PDF wird an den Ort der Ausgangs-XLSM gespeichert (funktioniert)
    5. Prüfung, ob eine Datei mit diesem Dateinamen bereits existiert. Wenn ja, MsgBox (funktioniert nicht). Herausforderung: Die XLSM liegt auf einem Serverpfad, die Vergabe des Dateinamens ist dynamisch (s.o.), es kann also kein lokaler, fixierter Dateiname angegeben werden.
    6. Abfrage, ob Datei überschrieben werden soll oder nicht (noch nicht eingebaut, da 5 nicht funktioniert)

    Meine aktuellen Versuche sehen wie folgt aus und produzieren beim aktuellen Stand die Fehlermeldung 'Laufzeitfehler "68": Das Gerät ist nicht verfügbar':

    ****
    Sub PDF_Speichern()

    Dim name As String
    Dim Matrikel As String
    Dim Aufgabe As String
    Dim Dateiname As String
    Dim Pfad As String
    Dim Korrektor As String

    ChDir ThisWorkbook.Path

    name = Range("C1")
    Matrikel = Range("C2")
    Aufgabe = Range("C3")
    Korrektor = Range("B12")
    Dateiname = name & "_" & Matrikel & "_" & Aufgabe & "_" & "Bewertung" & ".pdf"

    If Len(name) = 0 Then
    MsgBox ("Bitte Namen angeben")
    Exit Sub
    End If
    If Len(Matrikel) = 0 Then
    MsgBox ("Bitte Matrikelnummer angeben")
    Exit Sub
    End If
    If Len(Aufgabe) = 0 Then
    MsgBox ("Bitte Aufgaben-Namen angeben")
    Exit Sub
    End If
    If Len(Korrektor) = 0 Then
    MsgBox ("Enter your ID")
    Exit Sub
    End If

    'Ab hier hakt es. Ich habe es schon ohne Anführungsstriche versucht, mit verschiedenen Klammern und mit '= Dateiname Then', leider erfolglos

    If Dir("ThisWorkbook.Path & Dateiname") = "" Then
    MsgBox ("Achtung! Datei existiert bereits. Überschreiben?")
    Else

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Dateiname, Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
    End If
    End Sub
    ****

    Meinen bisherigen Recherchen zufolge kann das Problem nicht über ein Object gelöst werden, weil das für Excel für Mac nicht verfügbar ist. Auch bei Ron de Bruin habe ich mich schon umgeschaut und bin zu keiner Lösung gekommen.

    Hat jemand einen Lösungsvorschlag?

    Vorab schon mal vielen Dank und Grüße
    MikroMeso
    _____
    Excel 2011 für Mac (14.6.3) auf Mac OS X (10.9.5)
     
    MikroMeso, 7. Juli 2016
    #1
  2. Beverly
    Beverly Erfahrener User
    Hi,

    ich würde es so versuchen:

    Code:
    If Dir(ThisWorkbook.Path & "\" & Dateiname) <> "" Then
    Bis später,
    Karin
     
    Beverly, 7. Juli 2016
    #2
  3. MikroMeso Neuer User
    Hallo Karin,

    vielen Dank für deinen Vorschlag. Leider führt diese Zeile zu 'Laufzeitfehler "13": Typenkonflikt'

    Wie gesagt arbeite ich auf Word für Mac und das scheint insbesondere bei der Pfadbezeichnung Eigenheiten zu haben. Ich habe auch schon / und : ausprobiert, mit und ohne Anführungszeichen, jedoch ohne Erfolg. Hast du noch eine alternative Idee?

    Danke und Grüßle
    MikroMeso
     
    MikroMeso, 7. Juli 2016
    #3
  4. Beverly
    Beverly Erfahrener User

    VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben

    Beverly, 7. Juli 2016
    #4
  5. MikroMeso Neuer User
    Lösung. Danke

    Hallo,

    nach langem Wühlen und Probieren bin ich nun zu folgendem (vll. nicht eleganten oder einfachen aber funktionierenden) Lösungsweg gekommen:

    Code:
    If FileOrFolderExistsOnMac(1, ThisWorkbook.Path & Application.PathSeparator & Dateiname) Then
        If MsgBox("Datei existiert bereits. Überschreiben?", vbYesNo + vbQuestion, "ACHTUNG!") = vbYes Then
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            Dateiname, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
            Else
            Exit Sub
        End If
    Else
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            Dateiname, Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
    
    Es geht also nicht ohne Ron De Bruines Funktion: https://msdn.microsoft.com/de-de/library/office/jj614412(v=office.14).aspx

    Code:
    Function FileOrFolderExistsOnMac(FileOrFolder As Long, FileOrFolderstr As String) As Boolean
    'By Ron de Bruin
    '30-July-2012
    'Function to test whether a file or folder exist on a Mac.
    'Uses AppleScript to avoid the problem with long file names.
        Dim ScriptToCheckFileFolder As String
        ScriptToCheckFileFolder = "tell application " & Chr(34) & "Finder" & Chr(34) & Chr(13)
        If FileOrFolder = 1 Then
            ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists file " & _
            Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
        Else
            ScriptToCheckFileFolder = ScriptToCheckFileFolder & "exists folder " & _
            Chr(34) & FileOrFolderstr & Chr(34) & Chr(13)
        End If
        ScriptToCheckFileFolder = ScriptToCheckFileFolder & "end tell" & Chr(13)
        FileOrFolderExistsOnMac = MacScript(ScriptToCheckFileFolder)
    End Function
    
    Danke für die Hinweise

    Viele Grüße
    MikroMeso
     
    MikroMeso, 8. Juli 2016
    #5
Thema:

VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben

Die Seite wird geladen...
  1. VBA: Überprüfung, ob Datei existiert und Abfrage vor dem Überschreiben - Similar Threads - VBA Überprüfung Datei

  2. Zwei Excel Tabellen mit VBA verbinden

    in Microsoft Excel Hilfe
    Zwei Excel Tabellen mit VBA verbinden: Hallo zusammen, ich habe eine Frage / ein Anliegen... Ich bekomme aus einem System eine Excel Tabelle, dieser Tabelle möchte ich gerne über VBA auf Knopfdruck ein etwas anderes Layout geben....
  3. klickereignis eines dynamischen Button per vba auslösen

    in Microsoft Excel Hilfe
    klickereignis eines dynamischen Button per vba auslösen: Hallo, habe einen dynamisch erzeugten Button + Klasse, dies funktioniert, jetzt muß ich aber das Klickereignis dieses Button per VBA auslösen. wie kann ich diesen jetzt ansprechen, in der...
  4. Kann keinen VBA Kode eingeben

    in Microsoft Excel Hilfe
    Kann keinen VBA Kode eingeben: Hallo, ich habe eine Excel Datei bekommen in Format .xlsm. In Editor kann ich Formulare und Module anlegen und Kode einfügen und ausführen. Nun wollte ich Kode hinzufügen der direkt nach dem...
  5. VBA prüfen - eventuell Fehler

    in Microsoft Access Hilfe
    VBA prüfen - eventuell Fehler: Hallo Fachkräfte, hier ein VBA-Modul das einen Fehler enthalten soll. Case 2 wurde in 2022 geändert. In Case 3 , 4 oder ... soll auch noch ein Fehler sein. Wo genau was falsch ist und wie...
  6. VBA: Fehler 0x800a03ec beim Ribbon

    in Microsoft Excel Hilfe
    VBA: Fehler 0x800a03ec beim Ribbon: Hallo, ich habe eine Tabelle, die ich ohne Titelleiste anzeigen lassen möchte. Dazu habe ich mir zwei Makros geschrieben Sub AusBlenden() CommandBars("Worksheet Menu Bar").Enabled = False...
  7. Ich möchte per VBA ein Datum überprüfen ob es in einem bestimmten Datumsbereich liegt

    in Microsoft Excel Hilfe
    Ich möchte per VBA ein Datum überprüfen ob es in einem bestimmten Datumsbereich liegt: Hallo Leute ich bin wieder mal da habe ein Problem diesmal in Excel 2003 VBA, Ich habe mir aus diversen Foren einen Code zusammengebastelt aber ich bin damit nicht ganz Glücklich. Ich möchte per...
  8. VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.

    in Microsoft Excel Hilfe
    VBA: Wenn der Wert >2 dann soll eine E-Mail versendet werden. Überprüfung von ca. 100 Zeilen.: Hallo Zusammen, ich habe das Problem das wir in unserem Unternehmen eine Bestandsliste unserer Toner in Excel führen. Aktuell bin verusche ich diese übersichtlicher und mit einen Upgrades zu...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden