1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Druckereinstellungen via VBA festlegen

Discussion in 'Office-Programme' started by augustavind, Nov 12, 2015.

Thread Status:
Not open for further replies.
  1. bahnrat

    bahnrat Kbyte

    Wenn Du die Fenstergröße erst garnicht zur Laufzeit änderst dürfte es doch kein Probleme geben.
     
  2. Ich habe das auch nicht vor. Aber die Anzeige dient nur meinen Mitarbeitern und ich möchte von Haus aus jegliche Änderungs- und "Spiel"-Möglichkeiten ausschalten.

    Ich hab aber noch ein ganz anderes dringliches Problem. Ich muss dringend eine andere Datei so einstellen, dass jedesmal wenn ich die Datei speichere automatisch auf dem Server ein pdf mit dem Dateinamen + Datum und Uhrzeit generiert wird.
    Ich habe folgenden Code in "Diese Arbeitsmappe" geschrieben:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "E:" & "\" & Name & Format(Now, "DD_MM_YYYY_hh_mm_ss") ".pdf", Quality:=xlQualityStandard _
    , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
    :=False
    End Sub

    Was mache ich falsch?
     
  3. bahnrat

    bahnrat Kbyte

    1. Da fehlt ein & bei "Filename", vor ".pdf".
    2. Was ist "Name" bzw. wo steht diese Variable? Die muss natürlich definiert und in der Prozedur hinterlegt sein.
     
  4. Ich dachte 'Name' gibt der Dateinamen vor? Wie kann ich den einbinden?
     
  5. bahnrat

    bahnrat Kbyte

    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim strPdfName  As String
    Dim strXLSName  As String
    Dim strPdfPath  As String
    Dim strFileDate As String
    
    strXLSName = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".") - 1)
    strPdfPath = ThisWorkbook.Path & Application.PathSeparator
    strFileDate = Format(Now, "DD_MM_YYYY_hh_mm_ss")
    strPdfName = strPdfPath & strXLSName & strFileDate & ".pdf"
    
    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
                                       Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                                       IgnorePrintAreas:=False, OpenAfterPublish:=False
    End Sub
     
  6. Das ist schon mal sehr geil. Jetzt hätte ich nur noch eine letzte Bitte.
    Ich möchte nur das erste Sheet (nennt sich bei mir "Auftragsfortschritt") speichern. Und was ebenfalls sehr wichtig wäre, ist dass ich in einem anderen Ordner speichern muss. Kannst du mir den noch umschreiben?
    Ich hab schon ein schlechtes Gewissen aber ich bin halt leider blutiger Anfänger.

    Grüße
    Andy
     
  7. bahnrat

    bahnrat Kbyte

    1. Ersetze ActiveWorkbook.ExportAsFixedFormat durch ThisWorkbook.Sheets("Auftragsfortschritt").ExportAsFixedFormat
    2. Bei strPdfPath kannst Du den Pfad anpassen.
     
  8. bahnrat

    bahnrat Kbyte

    Dafür gibt es keinen Grund.

    War ich auch mal.
     
  9. Ich hab jetzt gerade kein Excel in der Nähe, deshalb nur mal so ausm Bauch raus:
    1. Wenn ich irgendwann mehrere Sheets hinzufügen möchte muss es ("Auftragsfortschritt", "BLABLA", "BLABLA") lauten, richtig?
    2. wie genau setze ich das ein? Mein Laufwerk heißt nun beispielsweise Y:\Backup\2015. Trage ich das dann einfach so in Anführungszeichen ein oder ist das falsch?
     
  10. bahnrat

    bahnrat Kbyte

    Nein, das funktioniert so nicht. Je nach dem ob alle drei Tabellenblätter in eine PDF sollen oder für jedes Blatt eine eigene PDF-Datei benötigt man auch den entsprechenden Code.
     
  11. Kannst du mir beide Varianten aufzeigen? Ich hab noch gewaltig Probleme mit solchen Befehlen wie str dim etc. leider fehlt mir im Moment auch etwas die Zeit mich ausgiebig damit zu befassen.
     
  12. bahnrat

    bahnrat Kbyte

    Alle Tabellenblätter in eine PDF-Datei:
    Code:
    Sub PrintSheetsToSinglePdf()
    
    Dim strPdfName          As String
    Dim strXLSName          As String
    Dim strPdfPath          As String
    Dim strFileDate         As String
    Dim strOldSheet         As String
    Dim pdfOpenAfterPublish As Boolean
    
    'Bildschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    
    'Aktives Tabellenblatt merken
    strOldSheet = ActiveSheet.Name
    
    'Fragen ob PDF-Datei geöffnet werden soll
    If MsgBox("Soll die PDF-Datei nach dem Erstellen geöffnet werden?", vbYesNo + vbQuestion, "Öffnen?") = vbYes Then pdfOpenAfterPublish = True
    
    'Zu druckende Tabellenblätter auswählen
    Sheets(Array("Tabelle1", "Tabelle3")).Select
    
    'Variablen festlegen
    strXLSName = Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".") - 1)
    strPdfPath = ThisWorkbook.Path & Application.PathSeparator
    strFileDate = Format(Now, "DD_MM_YYYY_hh_mm_ss")
    strPdfName = strPdfPath & strXLSName & strFileDate & ".pdf"
    arrSHArray = Array("Tabelle12", "Tabelle3")
    
    'Gewählte Tabellenblätter als PDF ausgeben
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
                                  Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                                  IgnorePrintAreas:=False, OpenAfterPublish:=True
    
    'Tabellenblatt-Auswahl zurücksetzen
    Sheets(strOldSheet).Select
    
    'Bildschirmaktualisierung einschalten
    Application.ScreenUpdating = True
    End Sub
    
     
  13. bahnrat

    bahnrat Kbyte

    Tabelle(n) in einzelne PDF-Dateien.
    Code:
    Sub PrintSheetsToPdf()
    
    Dim varSheets           As Variant
    Dim strSheets           As String
    Dim strPdfName          As String
    Dim strPdfPath          As String
    Dim strFileDate         As String
    Dim lngSheetsCount      As Long
    
    'Tabellen auflisten
    strSheets = "Tabelle1,Tabelle3"
    
    'Pfad und Datum festlegen/formatieren
    strPdfPath = ThisWorkbook.Path & Application.PathSeparator
    strFileDate = Format(Now, "DD_MM_YYYY_hh_mm_ss")
    
    'Tabellennamen in Variant auflisten
    varSheets = Split(strSheets, ",")
    
    'Tabellen ausgeben
    For lngSheetsCount = 0 To UBound(varSheets)
      strPdfName = strPdfPath & Sheets(varSheets(lngSheetsCount)).Name & "_" & strFileDate & ".pdf"
         Sheets(varSheets(lngSheetsCount)).ExportAsFixedFormat Type:=xlTypePDF, Filename:=strPdfName, _
                                                  Quality:=xlQualityStandard, IncludeDocProperties:=False, _
                                                  IgnorePrintAreas:=False, OpenAfterPublish:=False
    Next lngSheetsCount
    
    End Sub
    
     
Thread Status:
Not open for further replies.

Share This Page