Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel-Datei als PDF ausgeben per Makro
#1
Hallo zusammen,


ich erstelle Formblätter in Excel und stehe vor zwei Aufgabenstellungen wozu ich definitiv Makros benötige (1 auf jeden Fall, die andere bin ich nicht ganz sicher), womit ich aber nicht ganz so firm bin.
Ich hoffe es kann mir hier geholfen werden.

Folgende Aufgabenstellungen:

Aufgabenstellung 1:

Eine Excel-Datei hat mehrere Tabellen. Ich möchte auf jeder ein Makro einfügen, womit ich die jeweilige Tabelle als PDF erzeugen kann.
Folgende Schwierigkeiten bei dem Thema:
- Die PDF-Datei soll einen bestimmten, automatisch vorgegebenen, Namen erhalten.
Bsp.: "Dateiname der Excel Datei ohne Endung"_"Tabellenname" am Ende dann natürlich ".pdf"
- Die PDF-Datei soll an genau demselben Speicherort erstellt werden, auf dem die Excel-Datei gespeichert ist

- Was genial wäre, wenn ich nur ein Makro benötigen würde und alle Tabellen würden sich über ein Makro per Mausklick erstellen jeweils eine Tabelle als ein PDF
(ist aber kein Muss und ich bin mit der "Basis-Lösung" schon mehr als zufrieden)

Aufgabenstellung 2:

Eine Excel-Tabelle hat einen Blatt-Index (angezeigt über eine Zelle). Dieser wird per Makro erhöht (A->B->C usw.).
Immer wenn dieser erhöht wird, muss in derselben Tabelle eine Zeile dem Druckbereich hinzugefügt werden (wo dann die Änderungsgründe usw. hinzugefügt werden).
Im Optimalfall kann das Makro (das den Index erhöht) auch gleich die Zeile dem Druckbereich hinzufügen.


So, dass waren so meine Sorgen.
Ich hoffe ihr könnt mir da helfen.
Ich danke euch schon jetzt vielmals für eure Mühen.

Gruß
Newbie :19:
Antworten Top
#2
Hallo,

zu Aufgabenstellung 1:
Public Sub AlleBlaetterZuPDF()
Dim oWs As Worksheet
With ThisWorkbook
For Each oWs In .Worksheets
oWs.ExportAsFixedFormat 0, .Path & "_" & DateinameOhneEndung(oWs.Name)
Next oWs
End With
End Sub

Function DateinameOhneEndung(ByVal strName As String) As String
Dim lngP As Long
lngP = InStrRev(strName, ".xls")
DateinameOhneEndung = IIf(lngP, Left(strName, lngP + (lngP > 0)), strName)
End Function
Hat Aufgabenstellung 2 etwas mit dem Betreff zu tun?

Gruß Uwe
Antworten Top
#3
Hallo,

ich glaube, Uwe meinte das so mit der Generierung des Dateinamens:
Code:
      oWs.ExportAsFixedFormat 0, .Path & "\" & DateinameOhneEndung(.Name) & "_" & oWs.Name
sonst landet man im falschen (übergeordneten) Verzeichnis

Grüße, Ulrich
Antworten Top
#4
Hallo Ulrich,

(22.04.2018, 12:56)losgehts schrieb: ich glaube, Uwe meinte das so ...

ja, so ist es.  Blush  Danke.  :19:

Gruß Uwe
Antworten Top
#5
Hallo Uwe, Hallo Ulrich.


vielen Dank für eure Hilfe.
War ja schnell, das hab ich gar nicht erwartet.
Klappt schon ganz gut, aber nach der 9ten Tabelle hört das Makro mit folgendem Verweis auf:

"Ungültiger Prozeduraufruf oder ungültiges Argument"

Was könnte man dagegen noch tun? (Zur Info, das Blatt hat bis zu 30 Tabellen)

@Uwe: Aufgabenstellung 2 hat nichts mit dem Betreff zu tun.


Danke euch schon mal für eure Hilfe.

Gruß Rainer
Antworten Top
#6
Hallo Rainer,

und bei welcher Zeile bleibt der Code stehen?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Hallo Steffl,

Public Sub AlleBlaetterZuPDF()
  Dim oWs As Worksheet
  With ThisWorkbook
For Each oWs In .Worksheets
      oWs.ExportAsFixedFormat 0, .Path & "\" & DateinameOhneEndung(.Name) & "_" & oWs.Name
    Next oWs
  End With
End Sub

Function DateinameOhneEndung(ByVal strName As String) As String
  Dim lngP As Long
  lngP = InStrRev(strName, ".xls")
  DateinameOhneEndung = IIf(lngP, Left(strName, lngP + (lngP > 0)), strName)
End Function


Hier hört es auf.

Gruß
Rainer
Antworten Top
#8
Hallo Rainer,

ich habe es bei mir getestet, da funktioniert es. Was steht zum Zeitpunkt der Fehlermeldung bei .Name und oWs.Name? Um das festzustellen, starte im VBA-Editor das Direktfenster mit STRG + G und gebe in diesem ?.Name ein, drücke Return und mache dasselbe mit ?oWs.Name. Was bekommst Du zurück?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#9
Hallo Stefan,


Problem gelöst.
Ich hatte noch eine versteckte Tabelle im Dokument, die wollte das Makro nicht drucken.
Danke für die Hilfe.


Gruß
Rainer
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste