Makro verschiedene Sheets drucken oo.oVersion3.0.0

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro verschiedene Sheets drucken oo.oVersion3.0.0

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Do, 23.04.2009 14:07

Hallo
So jetzt haben wirs >>>>>>> FAST<<<<<<<< geschafft!!
Der Code funktioniert : (leider nicht sauber Programmiert!!)
Hier der Code

Code: Alles auswählen

Sub Druck_PDF
   oCalc = thisComponent
   oSheet = oCalc.sheets().getByName("Berechnung")'Tabellennamen anpassen
   
   Filename = oSheet.getCellRangeByName("E1").string 'Zellinhalt auslesen für Dateinamen
   
   myView = oCalc.CurrentController
   myView.setActiveSheet(oSheet)
   oZellRange = oSheet.getCellRangeByName("$A$1:$F$59")'Bereich anpassen
   oCursor = oSheet.createCursorByRange(oZellRange)
   oAdress = oCursor.RangeAddress
   Dim aDruckbereich(0)
   aDruckbereich(0) = oAdress
   oSheet.setPrintAreas(aDruckbereich())
   Dim myProps(0) as New com.sun.star.beans.PropertyValue
   sUrl= "file:///P:/Geschäft/Kalk/" & Filename & ".pdf" 'Speicherort anpassen
   myProps(0).Name="FilterName"
   myProps(0).Value = "calc_pdf_Export"
   oCalc.storetoUrl(sUrl,myProps())
   oSheet.setprintareas(Array())'Druckbereich löschen
End Sub



Sub GotoSheet( nameRef as String )
	oDocument = ThisComponent
	oView = oDocument.CurrentController
	oSheet = oDocument.Sheets.getByName( nameRef )
	oView.setActiveSheet( oSheet )
End Sub
REM  *****  BASIC  *****

Sub GotoSheet2
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "Berechnung"

dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
	GotoSheet( "Berechnung" )



rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())

dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "aTableName"
args3(0).Value = "Berechnung"

dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args3())

dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
	
	
End Sub



Sub Druck1_PDF
   oCalc = thisComponent
   oSheet = oCalc.sheets().getByName("BST_FO")'Tabellennamen anpassen
   
   Filename = oSheet.getCellRangeByName("F5").string 'Zellinhalt auslesen für Dateinamen
   
   myView = oCalc.CurrentController
   myView.setActiveSheet(oSheet)
   oZellRange = oSheet.getCellRangeByName("$A$1:$AY$38")'Bereich anpassen
   oCursor = oSheet.createCursorByRange(oZellRange)
   oAdress = oCursor.RangeAddress
   Dim aDruckbereich(0)
   aDruckbereich(0) = oAdress
   oSheet.setPrintAreas(aDruckbereich())
   Dim myProps(0) as New com.sun.star.beans.PropertyValue
   sUrl= "file:///P:/Geschäft/Best/" & Filename & ".pdf" 'Speicherort anpassen
   myProps(0).Name="FilterName"
   myProps(0).Value = "calc_pdf_Export"
   oCalc.storetoUrl(sUrl,myProps())
   oSheet.setprintareas(Array())'Druckbereich löschen
End Sub



Sub GotoSheet3( nameRef as String )
	oDocument = ThisComponent
	oView = oDocument.CurrentController
	oSheet = oDocument.Sheets.getByName( nameRef )
	oView.setActiveSheet( oSheet )
End Sub
REM  *****  BASIC  *****

Sub GotoSheet4
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "BST_FO"

dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
	GotoSheet( "BST_FO" )



rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())

dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "aTableName"
args3(0).Value = "BST_FO"

dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args3())

dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
	
	
End Sub
Tja eben nur fast !!
Wenn wir die Datei als VORLAGE (.OTS) abspeichere (schreibgeschützt) funktioniert das Pdf machen!! Jedoch der Drucker druckt nur die sichtbare Tabelle!!
WIESO??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
Hat DDDDAAAAAA jemand einen kleinen Hinweis?

Danke für Eure Hilfe
Gruss Mathias

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von turtle47 » Di, 21.04.2009 09:21

Morgen Mathias,

ich habe auf Michaels Homepage noch etwas gefunden und den Code mal dahingehend geändert.

Code: Alles auswählen

Sub PrintSheet2
	oCalc = thisComponent
	oSheet = oCalc.sheets().getByName("Tabelle1")'Tabellennamen anpassen
	myView = oCalc.CurrentController
	myView.setActiveSheet(oSheet) 
	oZellRange = oSheet.getCellRangeByName("$A$1:$B$20")'Bereich anpassen
	oCursor = oSheet.createCursorByRange(oZellRange)
	oAdress = oCursor.RangeAddress
	Dim aDruckbereich(0)
	aDruckbereich(0) = oAdress
	oSheet.setPrintAreas(aDruckbereich())
	Dim printProp(0)as New com.sun.star.beans.PropertyValue
	printProp(0).Name = "Wait"
	printProp(0).Value = "true"
	oCalc.Print(Array,printProp())'Tabelle drucken
	oSheet.setprintareas(Array())'Druckbereich löschen
End Sub
Vielleicht funktioniert das.

Jürgen

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Di, 21.04.2009 07:25

Guten Morgen

Ganze Nacht dran und kein Erfolg !! :-(
************************************************
Das PDF wird richtig exportiert (genial :-) )
Der gleiche Code für Druck aber der Drucker macht kein muggs
Der Drucker wird einfach nicht angesteuert!!

Code: Alles auswählen

Sub GotoSheet( nameRef as String )
	oDocument = ThisComponent
	oView = oDocument.CurrentController
	oSheet = oDocument.Sheets.getByName( nameRef )
	oView.setActiveSheet( oSheet )
End Sub
REM  *****  BASIC  *****

Sub GotoSheet2
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aTableName"
args1(0).Value = "Tabelle3"

dispatcher.executeDispatch(document, ".uno:Show", "", 0, args1())
	GotoSheet( "Tabelle3" )



rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())

dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "aTableName"
args3(0).Value = "Tabelle3"

dispatcher.executeDispatch(document, ".uno:Hide", "", 0, args3())

dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
	
	
End Sub
Mit diesem Code geht es aber eben nicht so sauber programiert !!
Wieso geht dies ?????? mhhhhhhhhhhh
Gruss

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von turtle47 » Mo, 20.04.2009 15:10

Hallo Mathias,

es gibt noch zwei Möglichkeiten.

1. Der Druckbereich ist leer, dann wird auch nichts gedruckt.

2. Schau mal unter Menue > Datei > Druckereinstellungen was dort für ein Drucker voreingestellt ist.

Die Test bei mir sind alle erfolgreich verlaufen.

Ansonsten habe ich auch keinen Plan mehr. :(

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Mo, 20.04.2009 11:49

Leibundgut hat geschrieben:Hallo !!!
Danke für deine Hilfe!
Jedoch der Standard Drucker ist "gehäckelt"

Wenn ich dieses alte (sorry, ich bin nicht der Makro HIRSCH) Makro ausführe, druckt's

Code: Alles auswählen

sub tesssst
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())


end sub
Wir haben die ServerVersion 2003R, wenn dies hilft!
Danke und einen guten Appetit

Wenn ich einen Druckbereich manuell definiere geht es !!
Aber das Makro hat doch ein Druckbereich !! ?? Wieso funktioniert der PDF-Export aber der Drucker nicht ???
Null Plan !!
Danke

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Mo, 20.04.2009 11:38

Hallo !!!
Danke für deine Hilfe!
Jedoch der Standard Drucker ist "gehäckelt"

Wenn ich dieses alte (sorry, ich bin nicht der Makro HIRSCH) Makro ausführe, druckt's

Code: Alles auswählen

sub tesssst
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())


end sub
Wir haben die ServerVersion 2003R, wenn dies hilft!
Danke und einen guten Appetit

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von turtle47 » Mo, 20.04.2009 09:59

Hallo Mathias,

die Druckausgabe wird normalerweise direkt an den Standarddrucker gesendet.

Wenn Du unter Win-XP unterwegs bist, dann schau mal unter
Start > Einstellungen > Drucker und Faxgräte
welcher Drucker dort als Standard definiert ist (kleine Haken im Drucker-Icon)

Viel Erfolg.

Jürgen

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Mo, 20.04.2009 08:02

Guten Tag

Super , es klappt fast !!
Das PDF wurd sauber erstellt !! (Danke)

Jedoch das Makro beim Drucker hat noch ein Problem!
Es wird nicht gedruckt. Der Drucker bleibt stumm.
Ist hier etwas das nicht mit meinem Drucker nicht stimmt?

Code: Alles auswählen

Dim aDruckbereich(0)
   aDruckbereich(0) = oAdress
   oSheet.setPrintAreas(aDruckbereich())
   oCalc.Print(Array())'Tabelle drucken
Ich hab keinen Plan ?

Danke für die Hilfe!!
Schönen Tag

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von turtle47 » So, 19.04.2009 22:28

Hi Mathias,
Leibundgut hat geschrieben:Könnte ich als Dateiname auch einen Eintrag von einer Zelle übernehmen ?
Das ist auch kein Problem. Bei folgendem Code wir der Inhalt von Zelle "A1" in "Tabelle1" für den Dateinamen verwendet.
Das kannst Du entsprechend anpassen.

Code: Alles auswählen

Sub Store_to_PDF1
   oCalc = thisComponent
   oSheet = oCalc.sheets().getByName("Tabelle1")'Tabellennamen anpassen
   
   Filename = oSheet.getCellRangeByName("A1").string 'Zellinhalt auslesen für Dateinamen
   
   myView = oCalc.CurrentController
   myView.setActiveSheet(oSheet)
   oZellRange = oSheet.getCellRangeByName("$A$1:$B$20")'Bereich anpassen
   oCursor = oSheet.createCursorByRange(oZellRange)
   oAdress = oCursor.RangeAddress
   Dim aDruckbereich(0)
   aDruckbereich(0) = oAdress
   oSheet.setPrintAreas(aDruckbereich())
   Dim myProps(0) as New com.sun.star.beans.PropertyValue
   sUrl= "file:///C:/" & Filename & ".pdf" 'Speicherort anpassen
   myProps(0).Name="FilterName"
   myProps(0).Value = "calc_pdf_Export"
   oCalc.storetoUrl(sUrl,myProps())
   oSheet.setprintareas(Array())'Druckbereich löschen
End Sub
Leibundgut hat geschrieben:Schönen Wochenstart
Danke gleichfalls.

Jürgen

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » So, 19.04.2009 22:07

Hallo turtle47
Danke für deine Hilfe!
ich werde mich beim nächsten Mal freundlicher benehmen. :-) (War frustriert weils nicht funktionierte)

Soweit ich dies eingefügt habe funktioniert es auch ( Danke)
Könnte ich als Dateiname auch einen Eintrag von einer Zelle übernehmen ?
Danke

Schönen Wochenstart
Gruss Mathias

Re: Makro verschiedene Sheets drucken oo.oVersion3.0.0

von turtle47 » Fr, 17.04.2009 18:12

Hallo Leibundgut,

zuerst einmal ein herzliches Willkommen hier im Forum.

Sicherlich fragst Du Dich warum Du noch keine Antwort erhalten hast.
Ein freundliches Hallo als Einleitung und eine Grussformel am Schluss macht sich immer gut. :wink:
Leibundgut hat geschrieben:Können Sie uns mitteilen wie dies Funktioniert ?
Mit folgendem Code wird ein Druckbereich auf der "Tabelle1" festglegt, das Sheet gedruckt und der Druckbereich wieder gelöscht. Wenn mehrere Druckbereiche festgelegt sind, dann gibt es in dem zweiten Code Probleme mit dem PDF-Export weil dort dann alle Tabellen exportiert werden die einen Druckbereich haben.

Code: Alles auswählen

Sub PrintSheet
	oCalc = thisComponent
	oSheet = oCalc.sheets().getByName("Tabelle1")'Tabellennamen anpassen
	myView = oCalc.CurrentController
	myView.setActiveSheet(oSheet) 
	oZellRange = oSheet.getCellRangeByName("$A$1:$B$20")'Bereich anpassen
	oCursor = oSheet.createCursorByRange(oZellRange)
	oAdress = oCursor.RangeAddress
	Dim aDruckbereich(0)
	aDruckbereich(0) = oAdress
	oSheet.setPrintAreas(aDruckbereich())
	oCalc.Print(Array())'Tabelle drucken
	oSheet.setprintareas(Array())'Druckbereich löschen
End Sub
Hier der Code für den PDF-Export

Code: Alles auswählen

Sub Store_to_PDF 'unter gleichem Dateinamen wie Dokument
	oCalc = thisComponent
	FileTitle=GetFileNameWithoutExtension(oCalc.Title,"\")'Dateiname ohne Extension auslesen
	oSheet = oCalc.sheets().getByName("Tabelle1")'Tabellennamen anpassen
	myView = oCalc.CurrentController
	myView.setActiveSheet(oSheet) 
	oZellRange = oSheet.getCellRangeByName("$A$1:$B$20")'Bereich anpassen
	oCursor = oSheet.createCursorByRange(oZellRange)
	oAdress = oCursor.RangeAddress
	Dim aDruckbereich(0)
	aDruckbereich(0) = oAdress
	oSheet.setPrintAreas(aDruckbereich())
	Dim myProps(0) as New com.sun.star.beans.PropertyValue
	sUrl= "file:///C:/" & FileTitle & ".pdf" 'Dateiname anpassen
	myProps(0).Name="FilterName"
	myProps(0).Value = "calc_pdf_Export"
	oCalc.storetoUrl(sUrl,myProps())
	oSheet.setprintareas(Array())'Druckbereich löschen
End Sub
Die Tabellennamen und den Druckbereich musst Du noch anpassen.
Was mir noch nicht ganz klar ist wie der Dokumentenname für das PDF-Dokument vergeben wird, deshalb habe ich den Namen des aktuellen Tabellendokumentes verwendet.

Unter Menue > Extras > Optione > OOo-Calc > Drucken > [X] "Nur ausgewählte Tabellen drucken" auswählen

Hilft das weiter?

Viel Erfolg.

Jürgen

Makro verschiedene Sheets drucken oo.oVersion3.0.0

von Leibundgut » Do, 16.04.2009 16:30

Wir sind an einem kleinen Projekt mit dem Programm Calc!!
> Wir haben ca. 20 Arbeitsblätter die nur zur Berechnung der einzelnen
> Produkte da sind.
> 3 Arbeitsblätter benötigen wir für folgendes:
>
> * Eingabe Blatt
> * Zusammenfassung der Eingabe
> * Bestellformular
>
>
> Was wir möchten, ist ein Makro das das Arbeitsblatt (Zusammenfasung der
> Eingabe) ausdruckt.
> Weiter möchten wir das ein weiteres Makro, dass gleiche Arbeitsblatt
> als PDF gespeichert wird.
> Zwei zusätzliche Makros für das Bestellformular. Dito.
>
> Somit können wir 4 Knöpfe im Eingabe Blatt hinterlegen und alle
> anderen Arbeitsblätter verbergen.
> Können Sie uns mitteilen wie dies Funktioniert ?
>
> Wenn ich ein Makro erstelle Druckts nur das Aktive Sheet.

Nach oben