Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen

pdf ansprechen

Betrifft: pdf ansprechen von: Florian
Geschrieben am: 10.04.2008 22:08:27

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!

  

Betrifft: AW: pdf ansprechen von: Ramses
Geschrieben am: 10.04.2008 23:09:02

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


  

Betrifft: AW: pdf ansprechen von: Florian
Geschrieben am: 11.04.2008 07:49:36

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


  

Betrifft: AW: pdf ansprechen von: Nepumuk
Geschrieben am: 11.04.2008 07:55:33

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


  

Betrifft: AW: pdf ansprechen von: Tino
Geschrieben am: 12.04.2008 15:24:49

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


 

Beiträge aus den Excel-Beispielen zum Thema "pdf ansprechen"