FreePDF_Multidoc Foren-Übersicht FreePDF_Multidoc
Alles rund um FreePDF und andere Tools
 
 StartseiteStartseite   FAQFAQ   ShopsShops   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Private NachrichtenPrivate Nachrichten   LoginLogin 

Printjobs.dll in VBS einbinden
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    FreePDF_Multidoc Foren-Übersicht -> Tools
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 25.08.2009, 09:32    Titel: Printjobs.dll in VBS einbinden

Hallo Leute,

hier einmal ein Beispiel, wie man die Printjobs.dll in einem VBScript verwenden kann. Das VBScript muss sich dazu in dem gleichen Verzeichnis befinden wie die Dll.

Code:


Option Explicit

Dim myObject
dim x

set myObject=createObject("Printjobs.Druckauftrag")
x= myObject.Dokument_in_Spool("FreePDF_PS",,True)

'wscript.echo gibt den Wert x aus. Kann gelöscht werden, da nur Demofunktion.
wscript.echo x



In dem Codeschnippsel wird jetzt für den Drucker 'FreePDF_PS' die Druckerwarteschlange geprüft und der gesamte Code wird erst dann fortgesetzt, wenn alle Ausdrucke erfolgt sind.

Eine genaue Funktionsbeschreibung der Dll und Exe findet Ihr auf meiner Webseite unter 4. Tools.

Im Bereich VB-Programmbeispiele habe ich auch ein vollständiges Beispiel hinterlegt.

Gruß Ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
wetlook
Gast









BeitragVerfasst am: 02.02.2012, 13:53    Titel: Hilfe benötigt

Hallo liebes Forum,
vielen Dank für die dll... Leider benötige ich hierzu hilfe...
Kann ich die ausstehenden Druckaufträge irgendwie in einem Listenfeld im Formular anzeigen lassen, so das diese immer im z.b. sekundentakt aktualisiert werden? ich bekomme es leider einfach nicht hin...
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 02.02.2012, 15:41    Titel: Re: Hilfe benötigt

Hallo Wetlook,

wetlook hat Folgendes geschrieben:
Kann ich die ausstehenden Druckaufträge irgendwie in einem Listenfeld im Formular anzeigen lassen, so das diese immer im z.b. sekundentakt aktualisiert werden?


das ist leider nicht möglich. Die Printjobs.dll liefert als Funktionsrückgabe nur die Anzahl der noch ausstehenden Drucke im Druckspooler als Ergebnis zurück.

Gruß Ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
wetlook
Gast









BeitragVerfasst am: 06.02.2012, 07:39    Titel: Hilfe

Hallo,
hast du irgendwo zufällig eine Beispieldatei (mdb) die du mir schicken könntest? Ich habe jetzt schon 2 Tage lang versucht das ganze ans Laufen zu bekommen, aber es klappt einfach nicht. Noch nicht einmal die Grundfunktion der Anzeige.
Könnte die Funktion mit dem Wait zwischen den Druckaufträgen sooo gut gebrauchen.
Danke für Deine Hilfe!
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 06.02.2012, 08:16    Titel:

Hallo Wetlook,

du musst die Printjobs.dll erst einmal registrieren. Dazu kopierst Du die dll in beliebiges Verzeichnis.

Danach führst du folgenden Batchbefehl aus:

Code:

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


Nun öffnest Du deine Datenbank und wechselst in den VBA-Editor (Alt+F11). In dem VBA-Editor wählst du unter

-> Extras -> Verweise -> Durchsuchen

die DLL aus. Nun sollte diese in den Verfügbaren Verweisen mit einem Haken aufgelistet sein.

Im Anschluss einfach auf die DLL wie nachfolgend verweisen:
(Achtung: Beispiel ist für Word. Bitte selbst anpassen.)

Zitat:

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



Alle Parameter sind auf meiner Webseite unter Printjobs.dll ausführlich mit Beispielen beschrieben.

Hierzu gibt es auch eine Online-Demonstration (s. Überschrift).

Gruß Ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de


Zuletzt bearbeitet von Ahmed Martens am 09.02.2012, 11:38, insgesamt einmal bearbeitet
Nach oben
miraG
Gast









BeitragVerfasst am: 09.02.2012, 11:27    Titel: Abbruch-Button nutzen?

Hallo,
wenn die printjobs.dll einen Auftrag im Spooler findet, geht sie in die Wait-Schleife. In dem Fenster wird dann 1 Druckauftrag angezeigt. Wenn ich auf abbrechen klicke, läuft mein Programmcode weiter.

Kann man die Taste abbrechen irgendwo im Code mit weiteren Funktionen ergänzen? Es soll in diesem Fall dann nicht mein normaler VBA-Code weiterlaufen, sondern in einen anderen Bereich (goto) springen.
Ich finde die Stelle nicht...
Ich stelle es mir so vor:
Abbruch klicken -->msgbox"sie haben abgebrochen"-->VBA läuft auf ein goto ende
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 09.02.2012, 11:37    Titel:

Aus der Online-Hilfe:

Funktionsrückgabewert Anzahl Druckjobs (bei vorzeitigem Abbruch = -1)

Ich gebe es zu, es ist ein bisschen versteckt bei den Parameterbeschreibungen.

if result = -1 then goto ....

Gruß Ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
miraG
Gast









BeitragVerfasst am: 09.02.2012, 12:36    Titel: Abbruch-Button

Hallo,
ich finde es einfach nicht. Wo genau steht das denn? Im Modul oder
muss ich in die dll? Falls ja, wie komm ich da rein? Texteditor geht ja nicht..
Sorry-Brett vor dem Kopf... Danke das du so geduldig bist... Embarassed
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 09.02.2012, 12:55    Titel:

Hier einmal ein Beispiel:

Code:

Public Sub Print_Serienbrief()

Dim iResult As Long
Dim i as long
Dim strPrinter As String

'Variable erstellen für den Funktionsaufruf der Printjobs.dll
Dim myDruckjobs As New Druckauftrag

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

'Anzeige des Warteformulars
iResult = myDruckjobs.Dokument_in_Spool("FreePDF_Multidoc", ActiveDocument.name, True)                                               

ActivePrinter = strPrinter        'zurücksetzen auf alten Drucker

End Sub


Wenn jetzt die Überwachung abgebrochen wird (Button Abbruch), erhält iResult



Code:

iResult = myDruckjobs.Dokument_in_Spool("FreePDF_Multidoc", ActiveDocument.name, True)


einen Rückgabewert -1. Auf diesen Rückgabewert kannst Du jetzt ja selbst prüfen.
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
miraG
Gast









BeitragVerfasst am: 09.02.2012, 14:38    Titel: Hm

Hallo, wird -1 denn nur bei dem Button Abbruch übergeben, oder auch wenn alle Druckaufträge fertig sind?
Ich habe mir dieses hier gebaut, jedoch reagiert er auf das -1 nicht oder er geht nicht in die Hauptschleife zurück:

Code:

Codestart:
DoCmd.OpenReport "Rezept", , , "ID =" & Me!ID

Do While i > 0
       DoEvents
       sleep 1000            '1 Sekunden warten
   
      i = myDruckjobs.Dokument_in_Spool(Drucker,  ActiveDocument.Name)     

      If i = -1 Then GoTo EX_end Else GoTo RW_Loopnext
 
RW_Loopnext:
Loop

goto Codestart
EX_end:
end sub
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 09.02.2012, 14:47    Titel:

-1 (Cancel) wird nur bei dem Button zurückgegeben. Ansonsten ist der Wert 0.

Du prüfst ja auch auf 0

Code:
Do While i > 0


Gruß Ahmed[/quote]
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
miraG
Gast









BeitragVerfasst am: 09.02.2012, 15:05    Titel: x

Ich drücke mich manchmal doof aus, sorry... Aber es ist total lieb das du mir hilfst...
Er soll, wenn 1 Druckauftrag in der Warteschlange ist nicht weitermachen
deshalb prüfe ich
i größer 0 -->dann die Schleife bis alle Druckaufträge weg sind.
Danach soll er wieder bei
[/code]
Codestart:
[/code]
loslegen und den nächsten drucken
[code]
DoCmd.OpenReport "Rezept", , , "ID =" & Me!ID
[code]
Er soll also immer 1 drucken, warten bis er fertig ist, dann den nächsten.
Wenn ich auf abbruch klicke soll er zu
[code]
end sub
[code]
springen[/code]
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 09.02.2012, 15:37    Titel:

Dann mach das doch ganz einfach wie folgt:

Code:

Codestart:
DoCmd.OpenReport "Rezept", , , "ID =" & Me!ID

i = myDruckjobs.Dokument_in_Spool(Drucker, ActiveDocument.Name,True)     

if MsgBox("Möchten Sie einen weiteren Bericht ausdrucken?",vbQuestion+VbyesNo,"Abfrage Berichtsdruck")=vbyes then
goto Codestart
end if

EX_end:


Jetzt wird dein Code solange angehalten, bis der Ausdruck erfolgt ist und im Anschluss kann über eine msgbox gesteuert werden, ob ein weiterer Druck erfolgen soll.

Gruß Ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
miraG
Gast









BeitragVerfasst am: 09.02.2012, 15:48    Titel: na

Das ist von daher nicht gut, da mindestens 300 Vorgänge gedruckt werden müssen. Klar, ich könnte vorher definieren wieviele-->eingeben und die Anzahl läuft durch, aber ich möchte nicht, dass jemand vorher das Papier zählen muss...
hast du eine Lösung die wie oben beschrieben läuft?
Ich zweifel schon an meinem Verstand... Es ist doch eigentlich nur eine
Schleife!?! Confused
Nach oben
Ahmed Martens
Site Admin


Anmeldedatum: 16.03.2009
Beiträge: 399





BeitragVerfasst am: 09.02.2012, 16:19    Titel:

Das kannst geht nicht.

Bei einer automatischen Überwachung wird am Ende der Prüfung immer ein Rückgabwert -1 ausgeben, damit der Anwender das Programmende erkennen kann.

Bei einer manuellen Überwachung wird die Anzahl der Druckjobs ausgeben.
Für alle weiteren Interaktionen ist dann der Anwender/Programmierer zuständig.

Ich verstehe auch nicht ganz, was du möchtest.
Du möchtest doch, dass jedesmal am Ende neu entschieden wird, ob ein weiterer Druck erfolgen soll.

Oder du öffnest ein VB(A)-Formular und zwar nicht modal (vbModeless) in der die Abbruchbedingung festgelegt wird.

Aber das kann ich auf die Schnelle auch nicht lösen.

Gruß ahmed
_________________
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF)
File2PDF (komplette Verzeichnisse auf einen Streich umwandeln)
findest Du alles hier: http://amTools.de
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    FreePDF_Multidoc Foren-Übersicht -> Tools Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB2.de


Impressum