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. VBA HTTP Post - Probleme JSON Payload

    in Microsoft Excel Hilfe
    VBA HTTP Post - Probleme JSON Payload: Moin, ich steh auf dem Schlauch.... Ich möchte mit VBA einen HTTP Post senden. Das klappt beim versenden OHNE Payload auch soweit auch ganz gut. Private Function http_post(url As String,...
  3. Kombinationsfeld in VBA auswerten

    in Microsoft Access Hilfe
    Kombinationsfeld in VBA auswerten: Guten Tag, ich habe ein VBA-Problem mit Kombinationsfeldern. Umfeld: Eine Tabelle A mit Namen incl. Adressen, indiziert (NamenID), keine doppelten Einträge möglich. Eine Tabelle B mit Rechnungen,...
  4. Download per VBA nicht aktuell

    in Microsoft Access Hilfe
    Download per VBA nicht aktuell: Hallo, ich nutze in VBA eine Download-Funktion, die mir die neueste Version meines Frontend downloaden soll. Der Download an sich funktioniert, doch leider wird eine alte Version gespeichert. Ich...
  5. Autofilter bei Zelländerung automatisch aktualisieren – ohne VBA

    in Microsoft Excel Hilfe
    Autofilter bei Zelländerung automatisch aktualisieren – ohne VBA: Hallo zusammen, ich habe eine Frage zur automatischen Aktualisierung von Autofilter-Ergebnissen in einer intelligenten Tabelle – und zwar ohne VBA. Ausgangssituation: Ich habe eine intelligente...
  6. Bereich mit VBA zusammenhalten

    in Microsoft Word Hilfe
    Bereich mit VBA zusammenhalten: Ich schreibe aus Access mit VBA Anschriften in ein Worddokument. Jede Anschrift soll zusammengehalten werdem, damit am Seitenende keine Anschrift getrennt wird. Wie muss ich vorgehen um eine...
  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