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 in einer Zeile zu lang

    in Microsoft Excel Hilfe
    VBA in einer Zeile zu lang: Moin, mein VBA Code ist für eine Zeile zu lang. Kann mir einer helfen wie ich den auf 2 Zeilen aufteilen Kann? arrSchuhDaten = Array(Range("A6"), Range("F6"), Range("J6"), Range("A7"),...
  3. Listbox wird nicht breiter, Schriftgrösse ändert sich

    in Microsoft Excel Hilfe
    Listbox wird nicht breiter, Schriftgrösse ändert sich: Hallo, ich habe ein Formular dessen Breite ich mit der Maus ändern kann. Im Formular habe ich einen Rahmen und darin eine Listbox deren Breite an die Formularbreite angepasst wird....
  4. Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch

    in Microsoft Excel Hilfe
    Kontrollkästchen aktivieren ohne VBA - wenn KK1 angekreuzt dann KK2 auch: Hallo zusammen, erstmal danke für all die Tipps und Kniffe, die ich ohne eigenen Thread gefunden und gelernt habe. Leider finde ich mein Thema nirgendwo... Aktuell habe ich zwei Spalten mit...
  5. Per Hyperlink ausgeblendetes Blatt einblenden

    in Microsoft Excel Hilfe
    Per Hyperlink ausgeblendetes Blatt einblenden: Hola ins Forum, ich bräuchte mal wieder eure Hilfe. Ich habe ein Tabellenblatt das mir als Register dient und wo Hyperlinks eingefügt sind um auf das dazugehörige Blatt zu springen. Diese Blätter...
  6. Bilder über VBA Größe und DPI ändern für Webshop

    in Microsoft Excel Hilfe
    Bilder über VBA Größe und DPI ändern für Webshop: Hallo Excel Spezialisten, Ich habe mir eine recht aufwendige Tabelle gebastelt, aus der ich Daten für meinen Webshop generiere und in einer .csv bereitstelle. Es werden neue Preislisten...
  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