Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Datei nicht gefunden
Heinz
Hallo Excelfreunde,
ich möchte per VBA eine pdf-Datei kopieren, die mit dem Adobe-PDF erzeugt wurde. Der Dateiname ist voreingestellt und ist immer derselbe (datei1 = C:\Daten\Excel\1Projekte\pdf-Dateien\Serienbrief.pdf). Daher möchte ich die Datei mit einem sinnvollen versehen.
Mit FileCopy datei1, datei2 wollte ich das versuchen. Die beiden Pfade datei1 und datei2 beeinhalten einen vollständigen, vorhandenen Pfad inkl. Dateinamen (datei2 = C:\Daten\Excel\1Projekte\pdf-Dateien\201011.pdf). Trotzdem meldet Excel "Datei nicht gefunden". Die pdf-datei ist aber da, ich habe sie aus dem Explorer geöffnet.
Weiß jemand, wo da der Haken ist?
vielen Dank
Heinz

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Datei nicht gefunden
17.02.2011 12:17:44
fcs
Hallo Heinz,
grundsätzlich sollte es funktionieren.
Probleme im Ablauf kann es geben, wenn du die PDF-Datei via Drucken per Makro erzeugst und direkt umbenenne willst. Der PDF-Drucker hat dann ggf. noch nicht die Fileausgabe abgeschlossen, das Excel-Makro will aber schon umbenennen.
Mit folgender Variante sollte es funktionieren.
ggf. muss man noch tiefer drangehen und über das Betriebssystem prüfen, ob der PDF-Druck abgeschlossen ist.
Gruß
Franz
'getestet unter Excel 2007
Sub FileCopy()
Dim datei1 As String, datei2 As String, dTime As Date
datei1 = "C:\Daten\Excel\1Projekte\pdf-Dateien\Serienbrief.pdf"
datei2 = "C:\Daten\Excel\1Projekte\pdf-Dateien\201011.pdf"
dTime = Now
Do
If Dir(datei1)  "" Then
VBA.FileCopy Source:=datei1, Destination:=datei2
MsgBox "PDF-Datei wurde kopiert"
Exit Do
Else
'Nach 10 Sekunden abbrechen
If Now - dTime > TimeSerial(0, 0, 10) Then
MsgBox "Datei """ & datei1 & """ nicht gefunden!"
Exit Do
End If
'2 Sekunden warten
Application.Wait Now + TimeSerial(0, 0, 2)
End If
Loop
End Sub

Anzeige
AW: Datei nicht gefunden
17.02.2011 14:44:17
Heinz
Hallo Franz,
vielen Dank für deine Bemühungen.
Aber so ähnlich hatte ich das schon eingebaut. Wenn ich sofort nachdem der Fehler auftritt, die Datei im Acrobat Reader öffne, funktioniert das anstandslos.
Ich habe auch die Wartezeit in deinem Makro - das ich testhalber statt meiner Version hineinkopiert hatte - auf 30 sec erweitert, leider mit demselben Ergebnis.
Ich werde das einmal auf einem anderen Rechner probieren, vielleicht schaut es dann anders aus.
Hier noch einmal das gesamte Makro:
Sub pdfErstellen(SNr As String, DNameSchule As String, AnzL%, wbB As Workbook, Optional NurErz  _
As Boolean)
Dim ws As Worksheet, wsB As Worksheet, wsS As Worksheet, wsL As Worksheet, stDr$, DName$,  _
pdfPfad$
Dim datei1 As String, datei2 As String, dTime As Date
Dim newHour%, newMinute%, newSecond%, waitTime As Date, efz&, d%
Set wsL = ThisWorkbook.Worksheets("Log")
Set wsS = ThisWorkbook.Worksheets("Steuerung")
Set ws = ThisWorkbook.Worksheets(SNr)
Set wsB = wbB.Worksheets("Daten")
pdfPfad = ThisWorkbook.Path & "\pdf-Dateien\"
Application.ScreenUpdating = False
DName = "Serienbrief.pdf"
DName = pdfPfad & DName
stDr = Application.ActivePrinter
On Error Resume Next
For d = 0 To 10
Err = 0
Application.ActivePrinter = "Adobe PDF auf Ne" & Format(d, "00") & ":"
If Err = 0 Then Exit For
Next
On Error GoTo 0
ws.PrintOut
Application.ActivePrinter = stDr
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + AnzL * 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
datei1 = DName
datei2 = pdfPfad & "Beitragsgrundlagen " & Year(Date) - 1 & " " & SNr & ".pdf"
dTime = Now
Do
If Dir(datei1)  "" Then
VBA.FileCopy Source:=datei1, Destination:=datei2
MsgBox "PDF-Datei wurde kopiert"
Exit Do
Else
'Nach 30 Sekunden abbrechen
If Now - dTime > TimeSerial(0, 0, 30) Then
MsgBox "Datei """ & datei1 & """ nicht gefunden!"
Exit Do
End If
'2 Sekunden warten
Application.Wait Now + TimeSerial(0, 0, 2)
End If
Loop
'    Name DName As pdfPfad & "Beitragsgrundlagen " & Year(Date) - 1 & " " & SNr & ".pdf"
'    FileCopy DName, pdfPfad & "Beitragsgrundlagen " & Year(Date) - 1 & " " & SNr & ".pdf"
wsS.Range("B11").Value = Date
wsS.Range("B12").Value = Time
'*** Logdaten eintragen
efz = wsL.Cells(Rows.Count, 1).End(xlUp).Row + 1
wsL.Cells(efz, 1).Value = Date
wsL.Cells(efz, 2).Value = Time
wsL.Cells(efz, 3).Value = DNameSchule
End Sub

Gruß
Heinz
Anzeige
AW: Datei nicht gefunden
17.02.2011 15:30:59
Heinz
Hallo Franz,
ich habe den Fehler gefunden. Es ist der fix eingestellte Pfad im Adobe PDF. Ich habe testhalber einen Unterordner erstellt, diesen aber im Adobe PDF nicht angepasst. Kein Wunder dass er die Datei nicht finden konnte.
Vielen Dank noch einmal für deine Bemühungen
Heinz

36 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige