Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  File bei SaveAs nicht überschreiben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  File bei SaveAs nicht überschreiben (4860 mal gelesen)
RODER
Mitglied
Maschineningenieur


Sehen Sie sich das Profil von RODER an!   Senden Sie eine Private Message an RODER  Schreiben Sie einen Gästebucheintrag für RODER

Beiträge: 494
Registriert: 04.01.2003

erstellt am: 18. Aug. 2011 13:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen

Habe mir ein kleies Script zusammengestellt, welches mir nach ein paar anderen Schritten
eine Zeichnung als PDF speichert.
So weit funktionniert das auch, nun möchte ich aber nicht, dass mir ein
vorhandenes File (mit dem selben Namen) automatisch überschrieben wird.
Ich möchte in dem Fall die selbe Frage gestellt bekommen wie wenn ich manuell
eine Datei "Speicher unter" wähle und die schon besteht.

Hier mal ein Teil vom Code:
    Dim oContext As TranslationContext
    Set oContext = ThisApplication.TransientObjects.CreateTranslationContext
    oContext.Type = kFileBrowseIOMechanism

    ' Create a NameValueMap object
    Dim oOptions As NameValueMap
    Set oOptions = ThisApplication.TransientObjects.CreateNameValueMap

    ' Create a DataMedium object
    Dim oDataMedium As DataMedium
    Set oDataMedium = ThisApplication.TransientObjects.CreateDataMedium

    ' Check whether the translator has 'SaveCopyAs' options
    If PDFAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then

        ' Options for drawings...

        oOptions.Value("All_Color_AS_Black") = 0

        'oOptions.Value("Remove_Line_Weights") = 0
        'oOptions.Value("Vector_Resolution") = 400
        'oOptions.Value("Sheet_Range") = kPrintAllSheets
        'oOptions.Value("Custom_Begin_Sheet") = 2
        'oOptions.Value("Custom_End_Sheet") = 4

    End If
   
    ' Create File Name and Path
    If Len(Trim(dDoc.FullFileName)) > 0 Then
      outFile = fso.GetParentFolderName(dDoc.FullFileName) & "\" & fso.GetBaseName(dDoc.FullFileName) & ".pdf"
        'dDoc.SaveAs outFile, True

Else
        MsgBox "Bitte zuerst das IDW Speichern!", vbInformation, "...Toni..."
End If

    'Set the destination file name
    oDataMedium.FileName = outFile

    'Publish document.
    Call PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)

------------------
Grüsse, Toni

Rechtschreibefehler gehören dem findigen Finder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Mitglied
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 18. Aug. 2011 16:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RODER 10 Unities + Antwort hilfreich

Hallo,

mit:

Code:

if fso.fileexists(pfad+name) then ...

könntest du prüfen, ob die Datei bereits existiert.

HTHHope this helps (Hoffe, es hilft weiter), Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RODER
Mitglied
Maschineningenieur


Sehen Sie sich das Profil von RODER an!   Senden Sie eine Private Message an RODER  Schreiben Sie einen Gästebucheintrag für RODER

Beiträge: 494
Registriert: 04.01.2003

erstellt am: 19. Aug. 2011 09:12    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nancy

Danke für diese Codezeile!
Damit kann ich abfangen ob die Datei schon besteht.
Ist mal wieder eine Weile her, seit ich im VBA rumprogrammiert habe und da ist
alles seither irgendwo in den kleinen grauen Zellen verstaubt 

Allerdings währe es erste Sahne wenn ich es nicht nur abfangen könnte, sondern gleich in den
"Speicher unter" Dialog reinspringen könnte.
Habe nun den Umweg über eine msgBox und die Auswertung der Antwort gewählt, so kann ich
immer noch dem Benutzer überlassen ob er überschreiben will oder nicht.

------------------
Grüsse, Toni

Rechtschreibefehler gehören dem findigen Finder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

startrek
Mitglied
Architekt


Sehen Sie sich das Profil von startrek an!   Senden Sie eine Private Message an startrek  Schreiben Sie einen Gästebucheintrag für startrek

Beiträge: 1361
Registriert: 13.02.2003

Veni, Vidi, VW ...
I came, I saw, I drove around in a little car.

erstellt am: 19. Aug. 2011 20:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RODER 10 Unities + Antwort hilfreich

Hi Toni,

wies mit dem internen 'Speichern unter - Dialog' bei der DIVAScherzhafte Bezeichnung für Inventor IV aussieht, keine Ahnung;-)

Kannst ja als Krücke, wenn bei der msg-Box vbno geklickt wurde, eine Inputbox anbieten, wo der User nen eigenen Namen vergeben kann. (und diesen dann an den existierenden Pfad verketten) Allerdings müsste man diesen Vorgang auch wieder auf bereits vohandene Datei checken (Schleifchen drum o.ä.)

Schicker wär's natürlich mit Original-Dialog, aber weiss nicht, obs simpel ginge oder nur mit API's zu erschlagen wäre.

Grüße Nancy

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

RODER
Mitglied
Maschineningenieur


Sehen Sie sich das Profil von RODER an!   Senden Sie eine Private Message an RODER  Schreiben Sie einen Gästebucheintrag für RODER

Beiträge: 494
Registriert: 04.01.2003

erstellt am: 20. Aug. 2011 07:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Nancy

Hab's im moment so gelöst, dass ich wenn das File schon besteht die
Auswahl gebe überschreiben oder nicht.
Weil wenn die Zeichnung richtig bezeichnet ist besteht das PDF davon noch nicht oder es gehört überschrieben.
Allerdings kommt es in der Hitze des gefechtes schon mal vor, das z.B. der Änderungsindex im Dateinamen noch
nicht angepasst worden ist und schon jemand ein PDF machen will. Deher muss ich es abfangen können.
----
If fso.fileexists(outFile) Then
                'MsgBox "Datei existiert bereits, bitte löschen oder Zeichnung umbenennen!", vbInformation, "...Toni..."
                byWert = MsgBox("Datei existiert bereits, Datei überschreiben?", vbYesNo, "...Toni...")
                If byWert = 6 Then
                    Call PDFAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
----

So geht es was ich brauche.

------------------
Grüsse, Toni

Rechtschreibefehler gehören dem findigen Finder

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




Sehen Sie sich das Profil von rkauskh an!   Senden Sie eine Private Message an rkauskh  Schreiben Sie einen Gästebucheintrag für rkauskh

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 20. Aug. 2011 08:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für RODER 10 Unities + Antwort hilfreich

Hallo

An den Speichern unter-Dialog kommt man aber recht simpel ran:

Code:
Dim oDialog As FileDialog
Call ThisApplication.CreateFileDialog(oDialog)

oDialog.ShowSave


Gibt noch ein paar Optionen, wie Startverzeichnis, Dateiendungsfilter usw. Einfach mal ansehen.

------------------
MfG
RK

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz