VBA - PDF speichern - Datei nicht überschreiben

Moderator: ModerationP

VBA - PDF speichern - Datei nicht überschreiben

Beitragvon Matthiassss » 14. Nov 2017, 16:34

Hallo,

ich bin leider nach einiger Zeit suchen im Internet und auf dem Forum noch immer nicht auf den Trichter gekommen.
Und zwar habe ich folgendes Problem.

Ich habe eine Excel-Datei mit 4Tabellenblättern. Dazu gibt es 2 Makros um entweder alle 4 Tabellenblätter als PDF zu speichern, und ein Makro um nur das eine geöffnete Tabellenblatt als PDF zu speichern.
Soweit funktioniert alles wunderbar.

Jetzt ist es aber so dass Excel mir eine evtl. gleichnamige Datei ohne zu fragen überschreibt. Ich schreibe in den Dateinamen auch immer das Datum. Blätter werden also nur überschrieben wenn sie am gleichen Tag erstellt wurden. Einen Tag später hat die Datei durch das Datum ja schon einen anderen Namen und das Problem trifft nicht mehr auf.
Die Möglichkeit nun auch die Uhrzeit in den Dateinamen einzupflegen würde wohl funktionieren, die möchte ich aber nicht im Dateinamen haben.

Am liebsten wäre mir dass bei gleichem Dateinamen nur eine Messagebox aufgeht welche abfragt:

"Dateiname schon vorhanden. Überschreiben?" -> Ja -> Nein
Bei Klicken von Ja wird die Datei mit gleichem Namen Überschrieben, Bei Klicken von Nein wird die Datei im Dateinamen mit z.B. einem aufwärtszählenden Zusatz ( z.B. "_1") ergänzt und gespeichert.

Ist so etwas möglich mit vba darzustellen und wie groß ist der Umfang?

Vielen Dank im Voraus,
Matthias
Matthiassss
 

Re: VBA - PDF speichern - Datei nicht überschreiben

Beitragvon Gast » 14. Nov 2017, 16:37

Matthiassss hat geschrieben:Hallo,

ich bin leider nach einiger Zeit suchen im Internet und auf dem Forum noch immer nicht auf den Trichter gekommen.
Und zwar habe ich folgendes Problem.

Ich habe eine Excel-Datei mit 4Tabellenblättern. Dazu gibt es 2 Makros um entweder alle 4 Tabellenblätter als PDF zu speichern, und ein Makro um nur das eine geöffnete Tabellenblatt als PDF zu speichern.
Soweit funktioniert alles wunderbar.

Jetzt ist es aber so dass Excel mir eine evtl. gleichnamige Datei ohne zu fragen überschreibt. Ich schreibe in den Dateinamen auch immer das Datum. Blätter werden also nur überschrieben wenn sie am gleichen Tag erstellt wurden. Einen Tag später hat die Datei durch das Datum ja schon einen anderen Namen und das Problem trifft nicht mehr auf.
Die Möglichkeit nun auch die Uhrzeit in den Dateinamen einzupflegen würde wohl funktionieren, die möchte ich aber nicht im Dateinamen haben.

Am liebsten wäre mir dass bei gleichem Dateinamen nur eine Messagebox aufgeht welche abfragt:

"Dateiname schon vorhanden. Überschreiben?" -> Ja -> Nein
Bei Klicken von Ja wird die Datei mit gleichem Namen Überschrieben, Bei Klicken von Nein wird die Datei im Dateinamen mit z.B. einem aufwärtszählenden Zusatz ( z.B. "_1") ergänzt und gespeichert.

Ist so etwas möglich mit vba darzustellen und wie groß ist der Umfang?

Vielen Dank im Voraus,
Matthias



Anbei der Code für 4 Seiten


Code: Alles auswählen

Sub PDF_Export_4_Seiten()
 Dim Pfad As String
 Dim Namen As String
 Dim jahr As String

 On Error GoTo fehler

 Namen = Worksheets("Deckblatt").Range("K1")

 Sheets(Array("Deckblatt", "Zeitaufnahme_1", "Stat. Auswert.", "Diagramm")).Select
 jahr = ""


 ActiveWorkbook.ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=ThisWorkbook.Path & "\" & Namen & jahr, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True

Sheets(Array("Deckblatt")).Select

 Exit Sub

fehler:
 MsgBox "Bitte erst die Blätter importieren!!!", vbInformation

 End Sub


Anbei der Code für die eine angewählte Seite

Code: Alles auswählen
Sub PDF_Seite_5()
'
' Fünfte Seite (Diagramm) als PDF mit automatischen Dateinamen in gleichen Ordner wie Excel Speichern


ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("N1").Value & "_" & Range("N2").Value & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True

End Sub
Gast
 

Re: VBA - PDF speichern - Datei nicht überschreiben

Beitragvon HKindler » 14. Nov 2017, 17:15

Hi,

schau dir mal die Dir()-Funktion von VBA an:

Code: Alles auswählen
 Namen = Worksheets("Deckblatt").Range("K1")
if Dir(Namen&"*")<>"" Then
    MsgBox "den Namen gibt es schon"
    ...
End If


Eventuell musst du das auch in einer Schleife machen, falls es auch Namen_1 schon gibt...
Gruß,
Helmut

----------------------------
Windows 8.1 (64 Bit) / Office 2013 (32 Bit)
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1549
Registriert: 04. Jul 2013, 09:02

Re: VBA - PDF speichern - Datei nicht überschreiben

Beitragvon Flotter Feger » 14. Nov 2017, 21:29

Hallöchen,

die Schleife könnte eventuell so aussehen ... den Code hab ich mal irgendwo gelesen ... weiß aber nicht mehr wo.
Musst du natürlich noch ein wenig anpassen ...
Code: Alles auswählen
Sub Increment()
Dim inc As Long
Dim filepath As String
Dim filename As String
Dim filedate As String
Dim fileext As String

filepath = ThisWorkbook.Path & "\"
fileext = ".txt"
filename = "Test_" & Format(Now, "MMDD") & fileext

Do While ((Dir(filepath & filename)) Like "Test_" & Format(Now, "MMDD") & "*")
    inc = inc + 1
    filedate = "Test_" & Format(Now, "MMDD") & "(" & Format(inc, "00") & ")"
    filename = filedate & ".txt"
Loop

MsgBox filename
End Sub
VG Sabina

bei mir läuft Win 7 32-Bit und Office 2010 32-Bit
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 931
Registriert: 24. Okt 2016, 16:40


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: synt4x und 14 Gäste