B. 4. allgemeine Tools


Hier finden Sie eine von mir erstellte Toolsammlung rund um die PDF-Erstellung. Diese Seite wird je nach Bedarf ergänzt und soll nur die vorhandenen Programme ergänzen. Sie sind aber nicht wesentlicher Bestandteil dieser. Es gelten die allgemeinen Lizenzbestimmungen.

B: Bug
F: Feature

Inhaltsverzeichnis

1. Printjobs.dll / Printjobs.exe
2. PS_Convert.exe
3. amMischen_PDF.exe
4. Rechner.exe (Additionsrechner)
5. amXLComment2PDF


1. Printjobs.dll / Printjobs.exe (Version 1.0.6) Demofilm abspielen

 

Bei der Printjobs.dll handelt es sich um eine Funktionsbibliothek, die in der Lage ist den Windows-Druckspooler für einen Drucker und für ein bestimmtes Dokument auszulesen. Optional kann die weitere Programmausführung solange angehalten werden, bis alle Druckaufträge abgearbeitet wurden.

Damit ein Aufruf der Druckerspooler-Überwachung auch außerhalb der Programmieranweisungen möglich ist, also z. B. aus einer BAT-Datei, gibt es jetzt auch eine EXE-Version. Der Aufruf ist analog wie der der DLL. Lediglich der Parameter Wait ist obsolet, da eine EXE kein Rückgabewert haben kann, wird beim Aufruf der Printjob.exe immer der Druckspooler überwacht.

Hinweis:

Um die DLL verwenden zu können, müssen Sie erst einen Verweis auf die DLL herstellen. Kopieren Sie sich die Datei in ein gewünschtes Verzeichnis. Öffnen Sie z. B. Word und starten Sie den VB(A)-Modus (Alt+F11). In dem Editor wählen Sie bitte wieder das Menü Extras => Verweise. In dem Dialogfeld wählen Sie den Button durchsuchen und wählen das Verzeichnis und anschließend die dll aus. Schließen Sie Ihre Auswahl 'Öffnen' ab. Jetzt haben Sie einen Verweis auf die ActiveX.Dll hergestellt.

Für die Verwendung der Prinjtobs.dll in einem VBSript finden Sie ein Beispiel in meinem Forum.



Funktionsaufruf (Printjobs.dll):

Function Dokument_in_Spool(strDruckername As String, _
                                                          Optional strDokument_name As String, _
                                                          Optional Wait As Boolean)
As Long
 

Programmaufruf (Printjobs.exe)
 

                                       C:\Programmpfad\Printjobs.exe /p [Printer] /d [Dateiname]

a. Aufruf aus einer Batch-Datei:

                                     "C:\MeinProgrammpfad\Mein Subpfad\Printjobs.exe" /p FreePDF XP /d Meine Datei

b. Aufruf mit Shell-Anweisung:

                                 i= Shell ("C:\MeinProgrammpfad\Mein Subpfad\Printjobs.exe /p FreePDF XP /d Meine Datei")

besser                    i = ShellAndWait("C:\MeinProgrammpfad\Mein Subpfad\Printjobs.exe " & _

                                                                 "/p FreePDF XP /d Meine Datei" , vbNormalNoFocus)
                                (Funktionsaufbau finden Sie weiter unten)

 

Parameter:

Printjobs.dll
  strDruckername   Name des verwendeten Druckers
  strDokument_name   Name der Datei, die gedruckt wird
  Wait   0|-1 (manuelle/automatische Überwachung)
  Funktionsrückgabewert   manuell = Anzahl Druckjobs
  automatisch = 0|-1 (Abbruch = -1)

 

Bei Verwendung von Wait wird ein Druckerstatus-Dialog angezeigt:
 

Printjobs.exe
  /p   Name des verwendeten Druckers (Pflichtparameter)
  /d   Name der Datei, die gedruckt wird (Optional)

 

1. Aufruf Printjobs.exe aus einem VB(A)-Modul

Um in einem Programm die Wartefunktion nutzen zu können, sollten Sie folgende Hilfsfunktionen für den Aufruf der Printjobs.exe verwenden:
(Alles in einem VB(A)-Modul kopieren)

    

' API Declaration
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Declare Function OpenProcess Lib "kernel32" _                                                      (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
     (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
Public Declare Function GetTickCount Lib "kernel32" () As Long
'Hier ist die eigentliche Funktion
'Der Prozess wird solange durchlaufen, bis das Programm Printjobs.exe beendet wurde.

Public Function ShellAndWait(Befehl As String, " & _
"Optional WindowStyle As VbAppWinStyle = vbNormalFocus) As Integer
   Dim hProcess As Long
    Dim ProcessId As Long
   Dim exitCode As Long
10   On Error GoTo ShellAndWait_Error
20 ProcessId = Shell(Befehl, WindowStyle)
    30 hProcess = OpenProcess(&H400, False, ProcessId)
40 Do 'Warten auf Ende der Konvertierung
    50   Call GetExitCodeProcess(hProcess, exitCode)
            60     DoEvents
    70 Sleep 500    '0,5 Sekunden Warten:
    80 Loop While exitCode = &H103&
    90     Call CloseHandle(hProcess)
100    ShellAndWait = exitCode
    110 On Error GoTo 0
120 Exit Function
     ShellAndWait_Error:
    130 MsgBox "Fehlernr.: " & Err.Number & " (" & Err.Description & ") in Prozedur ShellAndWait von Modul mdlpdftk", , "Fehler in Zeile: " & Erl
End Function

i = ShellAndWait("C:\MeinProgrammpfad\Mein Subpfad\Printjobs.exe " & _
                            "/p FreePDF XP /d Meine Datei" , vbNormalFocus)
 

2. Aufruf aus einer Batch-Datei

Über das Hilfsprogramm Sleep.exe wird die Anweisung 5 Sekunden lang angehalten und geprüft, ob eine Printjobs.log-Datei im Temp-Verzeichnis befindet. Bei Ende der Überwachung erstellt die Printjobs.exe automatisch eine Log-Datei (TXT-Datei). In der Log-Datei wird der Druckername, Druckdokument und das Programmende abgelegt.

Start_and_Wait.bat

     
@SET CheckLog=%temp%\Printjobs.log
"C:\Programme\Printjobs.exe" /p FreePDF XP
:wait1
call sleep 5
IF NOT EXIST %CheckLog% Goto Wait1 "C:\Programme\PS_Convert.exe"
EXIT

(Die Batchdatei und das Hilfsprogramm Sleep.exe ist Bestandteil der Zip-Datei 'Batch_Start_and_Wait.Zip')
(Die Sleep.exe stammt nicht von mir und ich übernehme keine Haftung. Ich habe sie getestet und diese lief bei mir ohne Probleme. Auch von anderer Seite habe ich keine Probleme gehört.)

3. Aufruf DLL aus VB(A)

Aufrufbeispiele Printjobs.dll:

1. Aufruf mit allen Parametern (Standard)

 

i=myDruckjobs.Dokument_in_Spool("FreePDF XP","MeinDokument.Doc",True)

 

Bei diesem Aufruf werden nur die Druckjobs gezählt, die das Dokument 'MeinDokument.doc und den Drucker 'FreePDF XP' betreffen. Das kann dann sinnvoll sein, wenn Sie z. B. wie in dem Word-Beispiel aufgezeigt, mehrere Word-Abschnitte einzeln ausdrucken möchten.

 

Durch die Angabe Wait=True wird der Druckerstatus-Dialog angezeigt und der Programmcode angehalten.

 

2. Aufruf nur mit Druckername mit Wait-Anweisung

 

i=myDruckjobs.Dokument_in_Spool("FreePDF XP","",True)

Hier werden alle Druckaufträge aufgelistet, die mit dem Drucker 'FreePDF XP' gedruckt wurden, also völlig unabhängig von dem Dokument.

Dieser Aufruf ist in Zusammenarbeit mit dem Programm 'PS_Convert.exe' sinnvoll, da Sie jetzt alle Ausdrucke starten können und nach dem letzten Ausdruck die Wartefunktion aufrufen. So wird die Konvertierung erst dann gestartet, wenn auch das letzte Dokument ausgedruckt wurde.

3. Aufruf nur mit Druckername ohne Wait-Anweisung

 

i=myDruckjobs.Dokument_in_Spool("FreePDF XP")

(siehe Beispiel 2.)

Da die Wait-Answeisung nicht mit angegeben wurde, bedeutet es, dass Sie letztendlich 'Wait=False' übergeben haben. Damit möchten Sie keine automatische Druckspooler-Überwachung haben. Sie erhalten als Rückgabewert die Anzahl der Druckjobs.

 

Beispiel Word-Makro:

    

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Optional, nur nötig wenn manuelle Überwachung

Public Sub Print_Serienbrief()

Dim i As Long

'Variable erstellen für den Funktionsaufruf der Printjobs.dll
Dim myDruckjobs As New Druckauftrag Dim strPrinter As String
strPrinter = ActivePrinter 'merken des alten Druckers
ActivePrinter = "FreePDF_Multidoc"    'umstellen auf neuen Drucker
For i = 1 To ActiveDocument.Sections.Count 'alle  Abschnitte einzeln drucken
Application.PrintOut Range:=wdPrintRangeOfPages, Item:= _
   wdPrintDocumentContent, Copies:=1, Pages:="S" & i, _
   PageType:=wdPrintAllPages, _
   Background:=False
Next
i = myDruckjobs.Dokument_in_Spool("FreePDF_Multidoc", ActiveDocument.name, True)                                                
ActivePrinter = strPrinter        'zurücksetzen auf alten Drucker
'Optionale manuelle Überwachung des Druckerspoolers
'Wenn die manuelle Überwachung nicht gewünscht wird, bitte diesen Abschnitt löschen
Do While i > 0
DoEvents
Sleep 5000            '5 Sekunden warten
i = myDruckjobs.Dokument_in_Spool("FreePDF_Multidoc", ActiveDocument.name)
   'i=Anzahl der Druckaufträge
Loop

'Ende Optionale manuell Überwachung

End Sub

 

4. Anzeigedialog

Druckspooler

 

 

 

Die Anzeige wird laufend aktualisiert. Das Formular wird immer im Vordergrund geöffnet. Sie können während der Anzeige bedingt weiterarbeiten. Lediglich das Programm, welches die Prozedur aufgerufen hat, ist gesperrt. Das kann auch systembedingt nicht abgeändert werden.

Um die Überwachung vorzeitig zu beenden, wählen Sie bitte die Taste 'Abbruch'. Der Rückgabewert der Funktion ist dann '-1' (gilt nur für Aufruf der DLL). Der Überwachungsdialog wird automatisch beim Ausdruck des letzten Dokumentes beendet.

Am Ende der Überwachung wird im Tempverzeichnis ein Log-Buchdatei erstellt (gilt auch für die DLL).

Hinweis:

Ab Windows 7 ist es wohl nötig, dass die Printjobs.dll richtig im System registriert wird, da es ansonsten zu einem Laufzeitfehler 429 Objekterstellung durch ActivX...

Gehen Sie daher bitte wie folgt vor:

1. Kopieren Sie die DLL in beliebiges Verzeichnis, worauf Sie Zugriff haben.
2. Erstellen Sie sich eine Batchdatei in dem Verzeichnis mit folgendem Inhalt (Pfade bitte anpassen):

  echo off
regsvr32.exe "C:\Users\Ahmed\Programmtools\FreePDF_Multidoc\Printjobs.dll"
exit

3. Speichern Sie die Batchdatei und rufen Sie über das Kontextmenü 'Als Adminstrator ausführen' auf.
4. Jetzt können Sie die Printjobs.dll

Download: Printjobs.dll (bei Downloadproblemen, bitte über Kontextmenü (rechte Maustaste) => Menü 'Ziel speichern unter' wählen.)
Download: Printjobs.exe
Download: Batch_Start_and_Wait.zip (enthält: Printjobs.exe, Sleep.exe, Start_and_Wait.bat)

nach oben

 

2. PS_Convert.exe (Version 1.0.3)

Bei sehr umfangreichen Ausdrucken kommt es immer wieder vor, dass FreePDF bzw. Ghostscript (GS) einen Konvertierungsfehler meldet. Der Fehler tritt in aller Regel immer erst bei Konvertierungsarbeiten von mehr als 150 PS-Druckdateien auf. Ich vermute es liegt an der Stringlänge bei dem Konvertierungsaufruf von GS, da alle vorhandene PS-Dateien im Volltext an GS übergeben werden.

Und genau hier setzt mein Programm PS_Convert.exe an. Es führt die Konvertierung in mehreren Zyklen, also Konvertierungsläufen, durch. Dabei werden die temporären PDF-Dateien in einem tmp-Verzeichnis zwischengespeichert und im Anschluss mit PDFtk zu einem Dokument zusammengeführt.

Systemvoraussetzungen:

  1. PDFtk im Programmverzeichnis (Download)
  2. eBook-Profil im FreePDF-Verzeichnis (ist standardmäßig installiert)

    (Das Programm sollte ohne Installation voll lauffähig sein. Sollten Sie dennoch Probleme haben, so bitte ich um eine kurze E-Mail.)

Programmoberfläche:

Parameter:

Sie können das Programm auch mit Parametern starten, damit können Sie alle benötigten Angaben schon vorab einstellen. Die Konvertierung wird nicht automatisch gestartet. Sollte der Druckvorgang noch laufen oder sich noch keine PS-Dateien im Inputpfad befinden, so erhalten Sie eine Hinweismeldung. Bitte warten Sie dann das Ende des Druckvorganges ab und wählen noch einmal die Schaltfläche 'Konvertierung'.

Der Programmstart lautet schematisch wie folgt:

C:\Programmpfad\PS_Convert.exe /z [Zyklus] /i [Inputpfad] /o [Outputpfad] /d [Dateiname] /l /r /u [Username]

Beispiel Aufruf aus VB(A):

Shell "C:\Programme\FreePDF_XP\PS_Convert.exe" /z 200 /i C:\Dokumente und Einstellungen\All Users\FreePDF /o C:\Dokumente und Einstellungen\66\Desktop /d MeineDatei /u %u

oder Sie erstellen auf dem Desktop eine Verknüpfung mit den Parametern.

Parameterbeschreibung:

  Zyklus (Anzahl PS-Dateien je...)   /z 100 (Standard)
  Inputpfad (PS-Dateien)   /i C:\Users\Ahmed\AppData\Local\FreePDF_XP\
  Outputpfad (PDF-Ablagepfad)   /o C:\Dokumente und Einstellungen\Ahmed\Desktop\
  PDF-Dateiname   /d MeineDatei.pdf
  vorhandene Datei löschen   /l (wenn Schalter (l)öschen  nicht gesetzt, wird ein Zähler z.B. (1) angefügt.)
    Gilt nur wenn Schalter /r verwendet wird (=reiner Batch-Aufruf).
  automatischer Start/Ende   /r (nach Konvertierung wird das Programm ohne Meldung beendet)
  Username   /u %u | %user | Ahmed
  Dateien des jeweiligen Users werden konvertiert.

Werden die Schalter /l u. /r beim Programmaufruf nicht gesetzt und ist die Datei vorhanden, so erhalten Sie eine Fehlermeldung. Bitte ändern Sie den Namen ab oder fügen eine Zählervariable (#) hinzu und wiederholen den Konvertierungsaufruf.

Der Schalter /u ist optional und wird ggf. für den akuellen User gesetzt.
Beachten Sie bitte, dass in einer Batchdatei das Prozentzeichen 2 x gesetzt werden muss (s. auch Beispiel 2).

Alle Parameter sind optional und in der Reihenfolge beliebig.
Bitte die Schalter in einer Zeile und ohne 'Anführungszeichen' (").

Aufrufbeispiele in Batch-Datei:

1. Aufruf ohne Parameter (Standard)

 

"C:\Programme\FreePDF_XP\PS_Convert.exe"

 

Bei diesem Aufruf wird das Programm mit den Standardparametern aufgerufen. Ändern Sie bitte die Vorgaben und wählen die Schaltfläche 'Konvertierung'.

 

Ist die Datei im Outputpfad schon verhanden erhalten Sie eine Fehlermeldung und der Vorgang wird abgebrochen. Ändern Sie den Dateinamen oder fügen einen Zähler hinzu, z. B. MeineDatei_##.pdf (Zähler = 2stellig).

 

2. Aufruf mit Parametern /l /r /d [...]

 

"C:\Programme\FreePDF_XP\PS_Convert.exe" /l /r /d MeineDatei_#.pdf /u %%u

Das Programm wird gestartet und alle Parameter bis auf Dateiname werden mit den Standardwerten vorbelegt. Die Konvertierung wird automatisch gestartet und beendet. Sie erhalten keine Hinweismeldung.

Der Dateiname 'MeinDatei_#' wird zu MeineDatei_1.pdf umbenannt und eine vorhandene Datei wird gelöscht.

Wird der Schalter /l nicht gesetzt, so wird der Zähler immer weiter hochgezählt bis die Datei einmalig ist.

(für weitere Beispiele siehe 3. Einrichtung_Druckjobs)

Download: PS_Convert.exe

nach oben

3. amMischen_PDF.exe (Version 1.0.3)

Systemvoraussetzung

  1. PDFtk im Programmverzeichnis (Download)
    (PDFtk kann keine Dateinamen mit Umlauten, also ä, ö, ü, und kein ß verarbeiten. Bitte achten Sie daher auf die richtigen Dateinamen.)

Das Programm amMischen_PDF.exe ist dafür gedacht, 2 PDF-Dokumente wie eine Kartenspiel miteinander zu vermischen. Es können immer nur 2 Dokumente vermischt werden. Die Original-Dateien werden dabei nicht verändert. Bitte löschen Sie diese ggf. manuell.

Beispiel 1: Beispiel 2:
Quelle1.pdf Seitenzahl: 80 Quelle1.pdf Seitenzahl:110

Quelle2.pdf

Seitenzahl: 110

Quelle2.pdf

Seitenzahl: 80

Ergebnis:

Seite 1 (Quelle1.pdf)

Seite 1 (Quelle1.pdf)

Seite 1 (Quelle2.pdf) Seite 1 (Quelle2.pdf)
Seite 2 (Quelle1.pdf) Seite 2 (Quelle1.pdf)
Seite 2 (Quelle2.pdf) Seite 2 (Quelle2.pdf)
[...] [...]
Seite 80 (Quelle1.pdf)´ Seite 80 (Quelle1.pdf)
Seite 80 (Quelle2.pdf) Seite 80 (Quelle2.pdf)
Seite 81 - 110 (Quelle2.pdf) Seite 81 - 110  (Quelle1.pdf)

Das Programm hat keine Benutzeroberfläche, sondern wird vollständig im Batch-Verfahren gesteuert.
Der Programmaufruf lautet wie folgt:

Programmaufruf (amMischen_PDF.exe)
(alle Parameter sind mit Semikolon (;) zu trennen und nicht in Anführungszeichen (") zu setzen)

               C:\Programmpfad\amMischen_PDF.exe Quelle1.pdf;Quelle2.pdf;Ziel.pdf;Zyklus
 

amMischen_PDF.exe
 Quelle1.pdf  1. Quelldokument
 Quelle2.pdf  2. Quelldokument
 Ziel.pdf  Name des Zieldokuments
 Zyklus  Anzahl Seiten je Mischzyklus (Optional ; Standard = 100)

a. Aufruf aus einer Batch-Datei:

     "C:\Mein Programmpfad\amMischen_PDF.exe" C:\...\Quelle1.pdf;C:\...\Quelle2.pdf;C:\...\Ziel.pdf;200

b. Aufruf mit Shell-Anweisung:

    Shell ("C:\Mein Programmpfad\amMischen_PDF.exe" C:\...\Quelle1.pdf;C:\...\Quelle2.pdf;C:\...\Ziel.pdf;200)

Bei sehr hohen Seitenzahlen kann es zu Fehlermeldung kommen, da die interne entstehende Befehlssequenz sehr lang werden kann. Um diesen Fehler zu umgehen, werden immer die Seiten standardmäßig in 100-Zyklen gemischt. Das jeweilige Zwischenergebnis wird im AppData\Local\Temp\amMischen-Verzeichnis unter der Dateibezeichnung tmp0001.pdf, tmp0002.pdf usw. gespeichert. Im Anschluss der Mischaktion werden alle Tmp-Dateien zu einem Dokument verschmolzen.

Die Angabe der max. Anzahl der Seiten der Zyklen hat nur Auswirkung auf die Geschwindigkeit bei wirklich sehr hohen Seitenzahlen, da sich dadurch die Anzahl der Tmp-Dateien verändert.

Vor der Mischaktion wird geprüft ob das Zieldokument vorhanden ist. Bestätigen Sie bitte die Löschaktion. Nach erfolgter Aktion können Sie sich das Ergebnis anschauen.

Download: amMischen_PDF.exe

nach oben

4. Rechner.exe (Version 2.0.3)

Bei der Rechner.exe handelt es sich um einen Tischrechner mit Tippstreifen-Funktion.

(Standardansicht) (Ansicht mit Eingabefeld)

 

Folgende Features werden unterstützt:

  1. mehrere parallele Tippstreifen je Sitzung
  2. Währungsrechner
  3. Excel-Export
  4. automatische Kommasetzung lt. Vorgaben (0-4-stellig)
  5. Drucken im Platz sparenden 3-Spaltenformat, auch von nur ausgewählten Zeilen (Zeile von/bis)
  6. permanenter Tippstreifen-Backup, kann beim Programmabsturz wieder aus dem Programmverzeichnis geöffnet werden (Backup.tpx)
  7. Speichern von Tippstreifen (*.tps) und Seitenvorschauen (*.tpa)
  8. Zeilensynchronisation mit Fremdprogrammen
  9. zwei Steuersatzrechner (automatische Addition und Subtraktion)
  10. Rechner immer on Top mit permanenter Ergebnisanzeige
  11. formatierte Kopierfunktion des Tippstreifens in den Zwischenspeicher
  12. Eingabekorrektur von erfassten Zeilen (nur Text, Addition u. Subtraktionsvorgänge)
  13. wichtigste Grundrechenarten (incl. Wurzel- u. 2-Potenzfunktion)
  14. Rundungs- und Nachkommafunktion (Nachkomma bis zu 4 Stellen)
  15. fortlaufende Rückgängigfunktion
  16. Zeilenrechner (einfache Grundrechenarten mit 2 Werten) mit Gridanzeige
  17. umfangreiche Korrekturmöglichkeiten, auch nachträgliches einfügen/löschen von Zeilen
  18. fortlaufende Summen- und Statusanzeigen (Berechnete - u. Gesamtzeilen)

Eine detaillierte Beschreibung erfolgt an dieser Stelle nicht, da es eine Hilfedatei gibt.

Folgende Neuerungen sind in der Hilfe nicht enthalten:

Funktionstaste F12:

Mit der Funktionstaste F12 können Sie die Dateiendung 'tps' mit der Rechner.exe verknüpfen. Damit können Sie mit einem Doppelklick auf die Dateien, den Rechner sofort starten.

Die Dateien tps, tpa und tpx sind reine Textdateien und können mit jedem Editor bearbeitet werden.

tps = Tippstreifen
tpa = Seitenansicht
tpx = Backupdatei

Parallele Tippstreifen je Sitzung

Um mehrere Tippstreifen gleichzeitig zu bearbeiten, geben Sie bitte einfach in dem Dropdown-Feld eine neue Tippstreifenbeschreibung ein. Bestätigen Sie Ihre Eingabe. Der Tippstreifen wird jetzt unter dieser Bezeichnung geführt und kann jederzeit aufgerufen werden. Der Ausdruck erfolgt mit einem gesonderten Hinweis.

Um einen Tippstreifen zu löschen, wählen Sie diesen einfach aus und drücken die {Entf}-Taste. Nach der Löschbestätigung wird der Tippstreifen gelöscht.

Excel-Export

 Um einen Tippstreifen in Excel nachzubearbeiten, wählen Sie bitte aus dem Menü 'Datei' das Untermenü 'Export Excel'. In dem sich öffnenden Dialogformular können Sie jetzt entscheiden, in wie viel Spalten der Export erfolgen soll. Standard sind 3 Spalten.

Die Gridanzeige ist nur eine Demonstration. Anschließen wählen Sie bitte den Button 'Export'.

Zeilenrechner

Mit dem Zeilenrechner können immer nur zwei Werte miteinander berechnet werden. Hintergrund ist der, dass wenn man ständig immer nur zwei Werte z. B. subtrahieren möchte, dann ist es einfach nervig immer eine Summe zu bilden. Diese Summenbildung wird im Zeilenrechner automatisch durchgeführt.

Geben Sie einfach den ersten Wert ein und dann den Operanden. Sobald Sie als die '+'-Taste drücken, wird in dem Combofeld dieser Operand angezeigt und es wird sofort in das Feld für den zweiten Wert gesprungen. Hier einfach den Wert eingeben und mit 'Enter' bestätigen.

Es werden nur die 4 Grundrechenarten unterstützt.

Zeilensynchronisation mit Fremdprogrammen

Die Zeilensynchronisation ist ein Programmmodul, welches wir hier in der Kanzlei regelmäßig nutzen, aber für den Standardanwender uninteressant sein sollte.

Mit der Zeilensynchronisation hat es folgende Bewandtnis.

Ein Fremdfenster wird anhand seines Namens (siehe Option) identifiziert. Ist in diesem Fremdfenster z. B. eine Gridanzeige enthalten, dann muss diese ausgewählt werden. Wird jetzt in dem Rechner der Button ausgewählt, wird die Synchronisation gestartet. Sobald jetzt in dem Rechner der Tippstreifen rauf- bzw. runtergescrollt wird (nur mit den Cursor-auf bzw. Cursor-ab-Tasten), wird in dem Fremdfenster analog gescrollt. Damit kann auf einfach Weise zwei Werte miteinander verglichen werden (Abstimmfunktion). Als Fremdfenster kann so ziemlich alle Programme dienen, die eine Wertanzeige in einem eigenständigen Grid vorsehen. Bedingung ist, dass das Grid auch anwählbar ist.

Die Synchronisation wird mit beendet, wenn Sie auf den Button mit dem Symbol klicken. Die Zeilensynchronisation ist für Buchhalter eine sinnvolle Einrichtung.

Alles weitere finden Sie in der beigefügten Hilfe.

Für Fragen stehe ich im Forum zur Verfügung. Bitte in der Rubrik 'Tools' Eure Anmerkungen und Fragen posten.

Kritiken sind in meinem Gästebuch natürlich auch erwünscht. Würde mich freuen zu erfahren, was Ihr so von dem Programm haltet. Das war so ziemlich das erste VB6-Programm, welches ich für unsere Kanzlei erstellt hatte.

Download für Erstinstallation: Rechner_Setup.exe
Download für Update: Rechner.exe (bitte in das Installationsverzeichnis kopieren)

 

 


5. amXLComment2PDF(Version 1.1.0.1)

1. Aufgabe des Programms

Mit dem Programm können Sie Exceldateien ausdrucken bzw. als Pdf abspeichern. Dabei werden für alle Kommentarzellen das Kommentarkennzeichen XLComment mit ausgedruckt. Ferner können Sie alle Kommentartexte als Liste in einem neuen Tabellenblatt darstellen und mit ausdrucken. Wenn Sie einen PDF-Editor wie z. B. PDF-XChange Pro besitzen, können Sie alternativ die Kommentare direkt im Text als PDF-Kommentare PDFComment hinzufügen. Da hierbei nicht geprüft wird, ob ein dahinterliegender Text verdeckt wird, sollten Sie einen PDF-Editor besitzen, um die genaue Position nachträglich selbst bestimmen zu können.

Beispiele:

Excel-Zellverbund über 2 Zeilen mit einem Excel-Kommentar.
Excel-Kommentar wird als PDF-Kommentar dargestellt.

Excel-Zellverbund über 2 Zeilen mit einem Excel-Kommentar.
Excel-Kommentar wird am Ende in einer Liste ausgegeben.

Alle Excel-Kommentare aus den ausgewählten Tabellenblättern werden in einer Liste dargestellt und ausgedruckt.

Der Aufbau ist wie folgt:

1. Comments (1) = Tabellenblattname
2. D13 = Zelladresse
3. 5.008.198,14 = Zellwert
4. enthaltener Kommentartext.

Das Programm besitzt keine Programmoberfläche (GUI), sondern wird ausschließlich im Batchverfahren verwendet.

Im DOS-Fenster werden die einzelnen Bearbeitungsschritte angezeigt:

XLSheets-ID 1/3
1 = aktueller Sheet
3 = Anzahl selektierter Sheets

Kommentare 1/10
1 = aktueller Kommentar
10 = Anzahl Kommentare je Sheet

Zoom-Faktor (Seiteneinrichtung in Excel):

Bitte beachten Sie, dass die Zoomeinstellung nur dann richtig berücksichtigt werden kann, wenn Sie die Zoomangaben in %-Werten einstellen. Relative Berechnungen wie z. B. X-Seiten hoch etc, können nicht berücksichtigt werden.

Für die richtige Vorgehensweise siehe Online-Demo. Demofilm abspielen

2. Aufruf von amXLComment2PDF

Schalter Beschreibung
/xlSource="c:\Mein Pfad\Meine Datei.xls"
/xlSource
Excel-Quelldatei.
Ist die Exceldatei geöffnet, dann reicht nur die Schalterangabe.
(Pfade sind bei Leerzeichen in Anführungszeichen zu setzen.)
/pdfTarget="c:\Mein Ziel\MeineDatei.pdf"
/pdfTarget=""c:\Mein Ziel"

PDF-Datei wird erstellt, wenn die Zieldatei nicht schon existiert. Ansonsten wird diese bearbeitet. Achtung: Datei muss mit Extension (*.pdf) enden.
Wird nur ein Speicherpfad vorgegeben, öffnet sich ein Speichern unter-Dialogformular vor der Erstellung wird. Die Pfadangabe darf nicht mit einem '\' enden.
(Pfade sind bei Leerzeichen in Anführungszeichen zu setzen.)

Wird kein Pdf-Dateiname angeben, wird der Dateiname automatisch aus dem Dateinamen der Excel-Datei gebildet. Diese muss dazu natürlich vorher gespeichert sein.
/Printer="Mein Drucker auf Ne0:" Druckername nach Excel-Namenskonventionen. Diesen erhalten Sie, wenn Sie den Schalter /?|help verwenden. Führen Sie dazu in der offenen Excel-Datei eine Druckerwechsel auf den gewünschten Drucker aus und rufen Sie das Programm mit dem Schalter /? auf. Der Druckername wird in den Zwischenspeicher eingefügt und kann in der Batchdatei mit Strg+V eingefügt werden.
(Druckername in Anführungszeichen zu setzen.)
Wird der Drucker nicht angegeben, wird die Exceldatei nicht gedruckt, sondern im PDF-Format abgespeichert.
/Color=10 (optional) Farbe für die Kommentarkennzeichnung. Standard ist 10=rot.
/CommentToEnd=0|1 Nach dem Druck wird die erstellte Kommentarliste gelöscht. 0|1 => 0=Nein/1=Ja (Standard)
/AutoNumber

Jede Kommentarzelle erhält einen laufenden Zähler (=> 1), 2) usw.). In Verbindung mit dem Schalter /CommentToEnd wird anstelle der Zelladresse die lfd. Nummer ausgegeben. Die Textfarbe entspricht der Farbe des Kommentarkennzeichen (s. /Color). AutoNumber

Nummerposition ist wie folgt:
  • nicht linksbündige Zellen: Nummer wird in der gleichen Zelle am oberen Rand ausgedruckt.
  • linksbündige Zellen: Nummer wird am unteren Rand der überliegenden Zelle ausgedruckt.
  • Autoausrichtung: wird automatisch erkannt und verhält sich wie vorstehend.

Die Schriftart (Arial) und Schriftgröße (6) ist fest und kann nicht verändert werden.

Tabellenwerte können durch Grafikelemente beim ausdrucken überlagert werden.

/CommentSheet=[...]

Excelsheets, die gedruckt/gespeichert werden sollen.

[-1]
[..] o. [0]
[1;3;4]
= alle Sheets
= selektierte Sheets
= 1+3+4 Sheet
/Show PDF-Datei öffnen
/del Alte PDF-Datei in den Windows-Papierkorb löschen
/debug Nach jeder Fehlermeldung wird im DOS-Fenster angehalten. Achung:Konsolenfenster muss sichtbar sein, da ansonsten das Programm einfriert.
Die Fehlermeldungen werden zusätzlich noch im Tmp-Ordner unter dem Dateinamen 'Err_amXLComment2Pdf.log' abgespeichert.
/?|help ruft die Quickhilfe mit Parameterbeschreibungen auf.

Batchbeispiele
1. Aufruf Quickhilfe:
amxlComment2pdf /?
2.a Erstellen einer neuen PDF-Datei mit Comments und Anzeige der PDF-Datei (alle Sheets)
a) amxlComment2pdf /CommentSheet=-1 /pdfTarget="C:\Users\Ahmed\Documents\tmpAnzeige.pdf" /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /Show
b) amxlComment2pdf /CommentSheet=-1 /pdfTarget= /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /Show
'/CommentSheet=-1 => alle Tabellenblätter
'a) da kein Drucker angegeben, wird die Exceldatei als PDF gespeichert und nicht gedruckt!
'b) da weder Drucker noch Pdf-Name angebeben wurde, wird der Pdf-Dateiname automatisch aus dem Excel-Dateinamen gebildet.
2.b Erstellen einer neuen PDF-Datei mit Comments und Anzeige der PDF-Datei (ausgewählte Sheets)
amxlComment2pdf /CommentSheet=1 /pdfTarget="C:\Users\Ahmed\Documents\tmpAnzeige.pdf" /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /Printer="FreePDF_Autorun auf RPT1:" /Show
'/CommentSheet=1 => nur das erste Tabellenblatt wird gedruckt.
'da ein Drucker angegeben, wird die Exceldatei gedruckt!
3. Exceldatei drucken, Kommentarzeichen in blau
amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=1;2;4 /Color=12 /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm"
'/CommentSheet=1;2;4 => Tabellenblatt 1+2+4 wird gedruckt.
4. Kommentarliste am Ende hinzufügen

a) amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=2 /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /CommentToEnd
b) amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=2 /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /CommentToEnd=1

c) amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=0 /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /CommentToEnd=0
d) amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /CommentToEnd=0

e) amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=2 /xlSource="C:\Users\Ahmed\Desktop\Mappe1.xlsm" /CommentToEnd /AutoNumber

'a+b) /CommentSheet=2 => Tabellenblatt 2 wird gedruckt und am Ende eine Kommentarliste hinzugefügt. Im Anschluss wird die Kommentarliste wieder aus der Exceldatei gelöscht.
'c+d) /CommentSheet=0 => Aktives Tabellenblatt wird gedruckt und am Ende eine Kommentarliste hinzugefügt. Im Anschluss wird die Kommentarliste nicht aus der Exceldatei gelöscht.
'e) wie a, zusätzlich werden auf dem Tabllenblatt eine Autonumber (=> 1), 2) etc.) ausgedruckt. In der Kommentarliste wird anstelle der Zelladressen die lfd. Nummern ausgedruckt.

=> Kommentarkennzeichen ist Rot (=Standard).

5. Ausdruck offene Excel-Datei ohne Kommentare, sondern nur mit Kommentarkennzeichen (blau)
'1. Schritt: nur der Ausdruck der Exceldatei mit Kommentarkennzeichen
amxlComment2pdf /Printer="FreePDF_Autorun auf RPT1:" /CommentSheet=1 /Color=12 /xlSource

2. Schritt: die gedruckte Datei wird mit PDF-Kommentaren versehen
amxlComment2pdf /CommentSheet=1 /pdfTarget="C:\Users\Ahmed\Documents\tmpAnzeige.pdf" /xlSource /Show

VB(A)-Anwendungsbeispiel:

'API-Hilfsfunktionen
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long

Public Sub Delay(Sec As Long)
Dim TimeOut As Long

On Error GoTo Delay_Error

' Abbruchbedingung für die Do Loop Schleife ermitteln
TimeOut = (GetTickCount / 1000) + Sec

Do
      ' Systemevents zulassen
      DoEvents
      ' TimeOut erreicht?
Loop Until TimeOut < (GetTickCount / 1000)

On Error GoTo 0
Exit Sub

Delay_Error:

MsgBox "Fehlernr.: " & Err.Number & " (" & Err.Description & ") in Prozedur Delay von Modul mdlpdftk", , "Fehler in Zeile: " & Erl
End Sub

Public Function ShellAndWait(Befehl As String, Optional WindowStyle As VbAppWinStyle = vbNormalFocus) As Integer '
Dim hProcess As Long
Dim ProcessId As Long
Dim exitCode As Long
Dim iCount As Long

On Error GoTo ShellAndWait_Error

ProcessId = Shell(Befehl, WindowStyle)
hProcess = OpenProcess(&H400, False, ProcessId)

Do       'Warten auf Ende der Konvertierung
      Call GetExitCodeProcess(hProcess, exitCode)
      '0,5 Sekunden Warten:
      DoEvents
      Sleep 500
Loop While exitCode = &H103&

Call CloseHandle(hProcess)

ShellAndWait = exitCode

On Error GoTo 0
Exit Function

ShellAndWait_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure ShellAndWait of Modul Modul1"

End Function

Private Sub cmdExport_Click()
Dim sBatch As String
Dim sQoute As String
Dim sPrinter As String
Dim i As Integer

sQoute = """"

sPrinter = "FreePDF_PS auf RPT2:"

'Verweis auf Prinjobs.dll notwendig
'Überwachung des Druckspoolers

Dim myDruckjobs As New Druckauftrag

'1. Step ausdrucken
sBatch = "C:\Kanzlei\Software\amXLComment2Pdf\amXLComment2Pdf.exe /xlSource /CommentSheet /Printer=" & sQoute & sPrinter & sQoute
Shell sBatch

'1 Sek. warten
Delay 1

Do While FileExists(Environ$("tmp") & "\amXLComment2Pdf.log")
      Delay 1
Loop

'Warten bis alle Ausdrucke aus dem Druckspooler sind
i = myDruckjobs.Dokument_in_Spool("FreePDF_PS", "", True)

'2. PDF-Konvertierung mit FreePDF_Multidoc
sBatch = "C:\Kanzlei\Software\FreePDF_Multidoc\FreePDF_Multidoc.exe /f MeineDatei.pdf /p C:\Users\Ahmed\Documents /o"
ShellAndWait sBatch             'Ausführung anhalten bis Ende

'3. Comment hinzufügen
'=> ShellAndWait kann hier nicht angegwendet werden!

sBatch = "C:\Kanzlei\Software\amXLComment2Pdf\amXLComment2Pdf.exe /xlSource /CommentSheet /pdfTarget=" & sQoute & "C:\Users\Ahmed\Documents\MeineDatei.pdf" & sQoute
Shell sBatch, vbHide

'Nachfolgender Code nur notwendig, wenn noch weitere Aktionen notwendig sind.

Delay 1

Do While FileExists(Environ$("tmp") & "\amXLComment2Pdf.log")
     Delay 1
Loop

[weiterer Code]

End Sub

 

Allgemeines:

  1. Bitte beachten Sie, dass wenn Sie den Druck selbst ausführen, werden die Kommentarkennzeichen nicht gesetzt.
  2. Alle Tabellenblätter werden in numerischer Reihenfolge gedruckt/gespeichert.
  3. In der Quickhilfe (/?) können Sie sich eine Exceltabelle mit allen Farbcodes erstellen lassen.
  4. Großkleinschrift der Parameter ist optional.
  5. Das Programm ist wg. der itextsharp.dll nicht auf einem Netzlaufwerk lauffähig.
  6. Die itextsharp.dll muss sich im Programmverzeichnis befinden.
  7. Die Excel-Instanz ist für den Zeitraum des Programmablaufes gesperrt, damit nicht während dessen, Änderungen vorgenommen werden können.

3. Systemvoraussetzung und Download

Getestet auf Windows 7 64bit und Microsoft Office 2010 Professsional. Das Programm benötigt die itextsharp.dll im Programmverzeichnis (im Installationspaket enthalten). Im Installationspaket sind Beispielbatchdateien enthalten. Bitte auf eigene Bedürfnisse anpassen.

 

Download: Setup amXLComment2Pdf.exe (Erstinstallation)
  amXLComment2Pdf.exe

 

 

nach oben