Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
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
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

pdf ansprechen

pdf ansprechen
10.04.2008 22:08:27
Florian
Hi zusammen,
gleich nochmal eine Frage, eigentlich zwei:
Ich will aus einem xls-File heraus eine pdf-Datei drucken und dann abspeichern. Jede Datei soll einen einheitlichen Namen haben, also am besten "XX_Datum_Uhrzeit.pdf".
Frage 1) Wie bekomm ich Datum/Uhrzeit?
Frage 2) Wie sprech ich das pdf an, um es abzuspeichern? Kann ich ihm ähnlich wie einem Workbook über "Set..." eine Objektvariable zuweisen?
Danke!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: pdf ansprechen
10.04.2008 23:09:02
Ramses
Hallo
1.
Kanst du englisch ?
Datum = Date, Zeit = Time, ...zu finden in der VBA-Online Hilfe
Du kannst keine PDF aus EXCEL abspeichern, allenfalls umbenennen
2.
Warum willst du die PDF aus EXCEL heraus drucken ?
Probier mal
Option Explicit

Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
    (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
    ByVal lpParameters As String, ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long


Private Sub Print_PDF_from_EXCEL()
    'öffnet eine PDF und druckt sie über ShellExecute aus
    ShellExecute 0, "Print", "C:\Deine.pdf", "", "", 0
End Sub

Gruss Rainer

Anzeige
AW: pdf ansprechen
11.04.2008 07:49:36
Florian
Hei Ramses,
erst mal Danke. Ist mir aber jetzt irgendwie zu hoch, aber ich glaube wir haben auch aneinander vorbeigeredet.
Ich habe ein xls-Sheet, dass ich als pdf haben will, damit ich eine nicht zu ändernde Kopie habe. Also drucke ich das als pdf. Wenn ich die Makro ausführe, ist das pdf offen und wird auf dem Desktop gespeichert, ich will es aber in einem bestimmten Ordner abspeichern und ihm einen von mir definierten Namen geben (anschauen will ich das Dokument in der Regel nicht). Hätte ich ein xls-File, so könnte ich das Dokument über Workbooks.count ansprechen, ihm einen Namen geben und alles damit anstellen. Aber wie kann ich das mit dem pdf-file machen?
Danke

Anzeige
AW: pdf ansprechen
11.04.2008 07:55:33
Nepumuk
Hallo Florian,
wie kommst du darauf, dass ein PDF nicht änderbar ist? Ich kann das genauso bearbeiten wie ein DOC. Außer du schützt es, aber beim drucken schon schützen geht nicht. Das Thema PDF - drucken wurde schon mehrere hundert mal angesprochen. Schau ins Forenarchiv. Da wirst du auch sehen, dass es für dein Anliegen keine saubere Lösung gibt.
Gruß
Nepumuk

AW: pdf ansprechen
12.04.2008 15:24:49
Tino
Hallo,
ich mache es mit dem PDFCreator, gib es als Freeware im Internet.
Beispiel: http://www.pdfforge.org/products/pdfcreator
Nach der Installation im VBA Editor unter Extras Verweise den PDFCreator einbinden
Der Code zum erstellen:

Sub Speichern_PDF()
Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
sPDFPath = GetDirectory("Wählen sie einen Speicherort")
If sPDFPath = "" Then Exit Sub
If Right$(sPDFPath, 1)  "\" Then sPDFPath = sPDFPath & "\"
sPDFName = "MeinPDF_" & Format(Now, "dd-mm-yyyy hh-mm") & ".pdf"
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
If .cStart("/NoProcessingAtStartup") = False Then
MsgBox "Can't initialize PDFCreator.", vbCritical + _
vbOKOnly, "PrtPDFCreator"
Exit Sub
End If
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0    ' 0 = PDF
.cClearCache
End With
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
Set pdfjob = Nothing
End Sub


Die Funktion für Ordnerauswahl, am besten in ein eigenen Modul einfügen:


Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
'Ruft das Dialogfeld zur Ordnerauswahl auf
Function GetDirectory(Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer
With bInfo
.pidlRoot = 0&
.lpszTitle = Msg
.ulFlags = &H1
End With
x = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function


Gruß
Tino

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige