Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1256to1260
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
Inhaltsverzeichnis

Hilfe bei Erweiterung meines Codes!

Hilfe bei Erweiterung meines Codes!
Thomas
Hallo Excelfreunde,
ich wünsch erstmal allen frohe Ostern.
Folgendes, ich erstelle Pdf`s die in einem Verzeichnis gespeichert werden mit diesem Code.
Private Sub CommandButton2_Click()
Dim ArrDruck() As String
Dim Spstg As String
Dim i As Integer
ArrDruck = Split("Rechnung,Brief,Anpassung_NK", ",")
For i = 0 To UBound(ArrDruck)
With ThisWorkbook.Sheets(ArrDruck(i))
'.PrintOut copies:=0
If .Name = "Rechnung" Or .Name = "Brief" Or .Name = "Anpassung_NK" Then
If .Name = "Rechnung" Then
Spstg = "C:\Users\Das ist mein\Documents\Miete und NK\"
Else
Spstg = "C:\Users\Das ist mein\Documents\Miete und NK\Post\"
End If
'Blatt ggf. als PDF-Datei speichern und anzeigen
If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
.ExportAsFixedFormat type:=xlTypePDF, _
Filename:=Spstg & ActiveSheet.Range("L1") & "\" & ActiveSheet.Range("B4") & "_" &  _
ActiveSheet.Range("B5").Text & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False   'True zum Anzeigen und False zum  _
nicht Anzeigen der PDF
End If
End If
End With
Next
End Sub
Was ich noch gern haben möchte ist ob die Ordner in L1 schon vorhanden sind dann Speichern sonst anlegen und dann Speichern. In L1 steht \Straßenname\Mietername.
Gruß Thomas aus Stuttgart

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Hilfe bei Erweiterung meines Codes!
07.04.2012 17:55:25
Josef

Hallo Thomas,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" (ByVal lpPath As String) As Long

Private Sub CommandButton2_Click()
  Dim ArrDruck() As String
  Dim Spstg As String, strFilename
  Dim i As Integer
  
  ArrDruck = Split("Rechnung,Brief,Anpassung_NK", ",")
  
  For i = 0 To UBound(ArrDruck)
    With ThisWorkbook.Sheets(ArrDruck(i))
      '.PrintOut copies:=0
      
      If .Name = "Rechnung" Or .Name = "Brief" Or .Name = "Anpassung_NK" Then
        
        If .Name = "Rechnung" Then
          Spstg = "C:\Users\Das ist mein\Documents\Miete und NK\"
        Else
          Spstg = "C:\Users\Das ist mein\Documents\Miete und NK\Post\"
        End If
        
        'Blatt ggf. als PDF-Datei speichern und anzeigen
        If MsgBox(Prompt:="Blatt """ & .Name & """ als PDF-Datei exportieren?", _
          Buttons:=vbQuestion + vbYesNo, Title:="PDF-Datei erstellen") = vbYes Then
          strFilename = Spstg & ActiveSheet.Range("L1") & "\" & ActiveSheet.Range("B4") & "_" & _
            ActiveSheet.Range("B5").Text & "-" & Format(Now, "YYYY-MM-DD hh-mm-ss") & " PDF.pdf"
          If MakeSureDirectoryPathExists(strFilename) <> 0 Then
            .ExportAsFixedFormat Type:=xlTypePDF, _
              Filename:=strFilename, Quality:=xlQualityStandard, _
              IncludeDocProperties:=False, IgnorePrintAreas:=False, _
              OpenAfterPublish:=False 'True zum Anzeigen und False zum _
              nicht Anzeigen der PDF

          Else
            MsgBox "Verzeichnis konnte nicht erstellt werden!", vbExclamation, "Hinweis"
          End If
        End If
      End If
    End With
  Next
  
End Sub



« Gruß Sepp »

Anzeige
AW: Hilfe bei Erweiterung meines Codes!
07.04.2012 18:29:58
Thomas
Hallo Sepp,
erst Danke für Deine Hilfe.
Ich habe den Code in ein Modul gepackt aber es tut sich nichts. Mein Code habe ich im Sheet1 meiner Mappe und da habe ich ihn nun auch hin gemacht wo es auch zu einer Fehlermeldung kam die ich gelöst bekommen habe indem ich Dein Code als erster ganz oben eingefüht habe und nun wunderbar funzt.
Nochmals danke, Klasse Hilfe.
Gruß Thomas aus Stuttgart
AW: Hilfe bei Erweiterung meines Codes!
07.04.2012 23:21:36
Reinhard
Hallo Thomas,
die Reihenfolge von Prozeduren in einem Modul spielt keinerlei Rolle.
Was für die "Reihenfolge" wichtig ist, zuoberst Option Explicit, dann Deklarationen
wie Private Declare.... u.ä.
dann alle Prozeduren.
Und ja, Sepp ist Klasse, hier unterlief ihm halt ein Lapsus denn der Code gehört natürlich
in das Modul des Blattes mit dem CB.
Gruß
Reinhard
Anzeige
AW: Hilfe bei Erweiterung meines Codes!
08.04.2012 08:38:20
Thomas
Guten morgen Reinhard,
danke für die Info. Das mancher Code nicht in ein Modul gehört hab ich schon hin und wieder gelesen und ich bin einer der erst mal selbst was versucht und daher hab ich ihn unter der Tabelle eingefügt.
Die Helfer sind auch nur Menschen und wenn ich abends lese was sie übern Tag wieder geleistet haben da kann ich nur sagen Hut ab.
Frohe Ostern an alle Helfer und Hilfe suchende!
Grüß Thomas aus Stuttgart
welcher Code in welches Modul
08.04.2012 12:28:32
Reinhard
Hallo Thomas,
generell sollte Code in ein Standardmodul (Basmain) . Wenn sie nicht von dir umbenannt
worden sind heißen die Modul1, Modul2, usw.
Erstellen kann man sie mit Einfügen---Modul.
Für die Mappe legt VBE (Der Editor) das Modul "DieseArbeitsmappe" an.
Pro Tabellenblatt wird ein eigenes Modulk angelegt, es hat zwei Namen wie z.B.
Tabelle1 (Tabelle1)
Der Name in Klammern ist der nme den du in Excel unten im Register siehst und dort abändern kannst.
Der Name davor ist der interne Excelname (Codename) für das Blatt.
In das Modul der mappe und in die Blattmodule gehört sogenannter Ereigniscode. Also Code der
vollautomatisch gestartet wird wenn ein bestimmtes Ereignis auftritt.
In den entsprechenden Modulen siehst du in mitte oben drüber ein Auswahlfenster, wähle dort
Workbook bzw. Worksheet aus.
Hast du das getan so kannst du im Auswahlfenster rechts dir alle bekannten Ereignisse anzeigen
lassen und auswählen. Excel fügt dann den entsprechenden Prozedurrumpf an wie z.B.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
FrOstern
Gruß
Reinhard
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige