Word Landscape

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Word Landscape

Beitragvon Rolf Ramacher » Mi, 05. Okt 2016 9:00

guten Morgen,

ich drucke eine bestehende Datei (kein word oder RTF) - über Word aus. Kann ich beim Drucken Word mitgeben Drucke bitte in Landscape ?-

in der Doku printout für word finde ich da nichts.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 9:06

Hast du mal eine Macroaufzeichnung probiert ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 9:15

Code: Alles auswählen
Sub Makro1()
'
' Makro1 Makro
'
'
    If Selection.PageSetup.Orientation = wdOrientPortrait Then
        Selection.PageSetup.Orientation = wdOrientLandscape
    Else
        Selection.PageSetup.Orientation = wdOrientPortrait
    End If
    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentWithMarkup, Copies:=1, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
End Sub


ALso ich denke Word Objekt erstellen, datei laden ... Dieses Dokument müsste dann die Selection sein da brauchen wir ein oPage Objekt und dann PageSetup...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Herbert » Mi, 05. Okt 2016 9:27

Das Dokument ist doch bereits im richtigen Format bestehend? Das wird doch übernommen. Oder irre ich da?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1782
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich

Re: Word Landscape

Beitragvon Rolf Ramacher » Mi, 05. Okt 2016 9:32

Hallo herbert

nein eben nicht. Ich möchte das am liebsten automatisch auf Landscape umstellen und dann ausdrucken, anstatt dies dem Kunden zu überlassen.

ich habe dies jetzt im quellcode so eingebaut:

Code: Alles auswählen
oWord:Selection:PageSetup:Orientation:=wdOrientLandscape             


aber bei wdorientLandscape kommt Meldung umbekannte variable
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 9:33

Meinst du mit Printout, den Commandozeilen Aufruf mit direktem Drucken ?
Wenn ja, falsche Rubrik und keine Ahnung ob das geht, da ein DOCX Dokument seine Ausrichtung kennt !

Die ist die Rubrik ActiveX :!:
Keine Kommandozeile, sondern ein wordobjekt, und dieses muss die Textdatei öffnen ... dann drucken.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 9:34

Rolf Ramacher hat geschrieben:
Code: Alles auswählen
oWord:Selection:PageSetup:Orientation:=wdOrientLandscape             


aber bei wdorientLandscape kommt Meldung umbekannte variable


dann fehlt die Word.ch - oder ist zu alt ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Mi, 05. Okt 2016 10:33

die word.ch habe ich nicht.

kann ich mir die irgendwo herunterladen, oder kann mir jemand die zur Verfügung stellen?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 10:49

die findest du bei den ActiveX Beispielen von Xbase++, wobei die älter ist (word 2003) ... dachte ich zumindest, aber in dem Ordner ist keine.

Bei Excel wird man fündig (excel.ch) und da findet man auch die Erklärung zu dem Tool. Für neue (2007 oder 2010) muss man sich die mit dem Tool erzeugen:
Code: Alles auswählen
//////////////////////////////////////////////////////////////////////
//
//  EXCEL.CH
//
//  Copyright:
//   Alaska Software, (c) 2002-2009. Alle Rechte vorbehalten.         
// 
//  Inhalt:
//   Diese Datei wurde mit tlb2ch.exe erzeugt
//  Bemerkungen:
//   Entnehmen Sie bitte das Parameterprofil von tlb2ch.exe der
//   Online Dokumentation
//  Syntax:
//   tlb2ch.exe excel.application > excel.ch
//   
//  Return:
//////////////////////////////////////////////////////////////////////
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon brandelh » Mi, 05. Okt 2016 11:10

tlb2ch word.application > word.ch

ergibt - für Word 2010 !

Code: Alles auswählen
////////////////////////////////////////////////////////////////////////////////
//
// Automatisch generiertes Header File
//
// Programm ID:            WORD.APPLICATION
//
// Erstellungs Datum:      05.10.2016
//
// Erstellungs Werkzeug:   tlb2ch.exe
//
//                         Copyright (c) Alaska Software. Alle Rechte vorbehalten.
//
////////////////////////////////////////////////////////////////////////////////

#ifndef _WORD_APPLICATION_HEADER_DAEMON

*** zu lang ***

// Enumeration WdOrientation
#DEFINE wdOrientPortrait                                                         0
#DEFINE wdOrientLandscape                                                        1

***

#define _WORD_APPLICATION_HEADER_DAEMON
#endif //_WORD_APPLICATION_HEADER_DAEMON
Dateianhänge
word.ch
(312.91 KiB) 19-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Mi, 05. Okt 2016 11:12

danke hubert

werde es versuchen, ob es klappt
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Fr, 07. Okt 2016 9:18

so das mit landscape hat funkt. kann ich auch hier bei schriftart + größe für den Dateiinhalt mitgeben??

ich habe da in der word.ch gefunden, bin mir aber nicht sicher ob dies so richtig ist

hier gibt es einen compiler-fehler syntax- Error
Code: Alles auswählen
      oWord:Selection:PageSetup:=Worddialog:wdDialogFormatFont:="8. Courier New"



weiß jemand hier Bescheid ?
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 10:20

kannst du den Code der das Wordobjekt steuert (mit dem Landscape) mal zeigen ?

Wie immer im Macro testen, ich denke das Ändern des Standardfonts (Normal) sollte helfen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Fr, 07. Okt 2016 11:23

Hi Hubert,

Code: Alles auswählen
      oWord:Selection:PageSetup:Orientation:=wdOrientLandscape             


das geht
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 11:25

Hi,

ich meinte auch die Zeilen darum (also von oWord generierung bis zum Ausdruck / Schließen) ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Fr, 07. Okt 2016 11:30

Code: Alles auswählen
   oWord:visible   := .f.                               // Word unsichtbar!
   cActivePrinter  := oWord:Activeprinter     // aktuellen Drucker feststellen
   oWord:Activeprinter:= cDrucker               // Neuen Drucker setzen
   oWord:documents:Open(cDoc)     
   If cDoc="lker.lit"
      oWord:Selection:PageSetup:Orientation:=wdOrientLandscape             
*      oWord:Selection:PageSetup:=Worddialog:wdDialogFormatFont:="8. Courier New"
   Endif
   oDoc       := oWord:ActiveDocument
   Do Case
      Case AT("filbestandliste2.rtf",cDoc) > 0
         aSeite:=oDlg:pageRangeSelected
         oDoc:PrintOut(.f.,Nil,wdPrintFromTo,Nil,alltrim(str(aSeite[1])),alltrim(str(aSeite[2])),Nil,1 )
      Case AT("maengel",cDoc) > 0
         nCopie:=oPrinter:SetNumCopies()
         oDoc:PrintOut(.f.,Nil,Nil,Nil,Nil,Nil,Nil,nCopie )
   Otherwise
      oDoc:PrintOut(.f.)   
   EndCase                   
   oWord:Activeprinter:= cActivePrinter       // alten Drucker setzen
   oDoc:close()
   oWord:Quit()
   oWord:destroy()
   oWord := NIL
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 11:44

Code: Alles auswählen
oWord:Selection:PageSetup:=Worddialog:wdDialogFormatFont:="8. Courier New"


wenn man das übersichtlicher schreibt, wird der Fehler sofort sichtbar, leider kenne ich die richtige Syntax auch nicht:

Code: Alles auswählen
oWord:Selection:PageSetup   :=   Worddialog:wdDialogFormatFont    :=    "8. Courier New"


es könnte eine Eigenschaft von PageSetup sein, aber diese Zeile ersetzt den Pagesetup mit der Rückgabe von Worddialog:wdDialogFormatFont !
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 11:50

Hier der erzeugte Macro Code:

Code: Alles auswählen
    Selection.TypeText Text:="Test"  // Text eigegeben "Test"

    Selection.Style = ActiveDocument.Styles("Standard") // Standardstyle ausgewählt.

    With ActiveDocument.Styles("Standard").Font // aktuellen Style "Standard" ändern *** ich denke hier liegt der Schlüssel bei TXT Dokumenten.
        .Name = "Arial"
        .Size = 12
        .Bold = True
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = wdColorAutomatic
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Scaling = 100
        .Kerning = 0
        .Animation = wdAnimationNone
        .Ligatures = wdLigaturesNone
        .NumberSpacing = wdNumberSpacingDefault
        .NumberForm = wdNumberFormDefault
        .StylisticSet = wdStylisticSetDefault
        .ContextualAlternates = 0
    End With
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Fr, 07. Okt 2016 14:35

ich habe alle m.E. Varianten durchgespielt - kein Ergebnis. kann ich das Marco denn beim drucken aufrufen ? als Function
oder mit runshell ??
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 14:48

nein das geht nur über das oWord Objekt.
Ich hatte irgendwo die Hilfe dazu ...

wenn das so stimmt (ich habs nicht probiert, aber du hast es so geschrieben):

oWord:Selection:PageSetup:Orientation := wdOrientLandscape

dann muss es so ählich aussehen:

oDoc - vermutlich das aktuelle Dokument, könnte also ActiveDocument (bzw. dessen Rückgabewert in Word) sein ?

Code: Alles auswählen
oDoc:Styles("Standard"):Font:Name := "Arial"
oDoc:Styles("Standard"):Font:Size := 12
oDoc:Styles("Standard"):Font:Bold := .f.

oWord:Selection:Style := oDoc.Styles("Standard")
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon brandelh » Fr, 07. Okt 2016 15:03

oder noch einfacher, ich habe die Entwicklertools eingeschaltet und in der Objekthirarchie folgendes Beispiel gefunden:

Code: Alles auswählen
Visual Basic für Applikationen
Dim rngTemp As Range

Set rngTemp = ActiveDocument.Range(Start:=0, End:=0)
With rngTemp
    .InsertBefore "Company Report"
    .Font.Name = "Arial"
    .Font.Size = 24
    .InsertParagraphAfter
End With

ActiveDocument.PrintOut


rngTemp ist also eine einfache Range (ganz am Anfang), du nimmst dort ja immer die Selection
Und ohne viel Aufwand wird direkt für diesen Bereich die Schriftart festgelegt, also erst gar nicht über Normal formatiert.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Mo, 24. Okt 2016 15:51

so nach meinem Urlaub wollte ich hier weitermachen.

aber beim 1. styles

Code: Alles auswählen
    oWord := CreateObject("Word.Application")

   IF Empty( oWord )
     MsgBox( "Microsoft Word ist nicht installiert" )
     RETURN Nil
   ENDIF

   oWord:visible   := .f.                               // Word unsichtbar!
   cActivePrinter  := oWord:Activeprinter     // aktuellen Drucker feststellen
   oWord:Activeprinter:= cDrucker               // Neuen Drucker setzen
   oWord:documents:Open(cDoc)     
   If At("lker.lit",cdoc) >0
      oWord:Selection:PageSetup:Orientation:=wdOrientLandscape             
*      oWord:Selection:PageSetup:Worddialog:=wdDialogFontSubstitution ="8.Courier New"
*      oWord:Selection:PageSetup:Compatibility:=wdSubFontBySize="8.Courier New"

oDoc:Styles("Standard"):Font:Name := "Courier New"
oDoc:Styles("Standard"):Font:Size := 8
oDoc:Styles("Standard"):Font:Bold := .f.

oWord:Selection:Style := oDoc:Styles("Standard")
   Endif



kommt diese Fehlermeldung word.ch ist eingebunden. weiß hier noch jemand Bescheid? wie ich hier die Schriftart Größe vorgeben kann.
ohne das dem user zu überlassen und Word zu starten und er macht das selber

Code: Alles auswählen
------------------------------------------------------------------------------
FEHLERPROTOKOLL von "C:\32Bit\Liefker.exe" Datum: 24.10.2016 15:46:31

Xbase++ Version     : Xbase++ (R) Version 1.90.331
Betriebssystem      : Windows  06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args         :
          -> VALTYPE: U VALUE: NIL
          -> VALTYPE: C VALUE: Standard
oError:canDefault   : N
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Parameter hat falschen Typ
oError:filename     :
oError:genCode      :          2
oError:operation    : Styles
oError:osCode       :          0
oError:severity     :          2
oError:subCode      :       1025
oError:subSystem    : BASE
oError:thread       :          1
oError:tries        :          0
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von DRUCKEN(37)
Aufgerufen von LISTEDRUCKEN(56)
Aufgerufen von (B)MAIN(41)
Aufgerufen von MAIN(56)
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon brandelh » Mo, 24. Okt 2016 16:08

versuche doch die Syntax von oben mit direkter Schrift:

Code: Alles auswählen
Set rngTemp = ActiveDocument.Range(Start:=0, End:=0)
With rngTemp
    .InsertBefore "Company Report"
    .Font.Name = "Arial"
    .Font.Size = 24
    .InsertParagraphAfter
End With

sollte etwa so aussehen:

Code: Alles auswählen
oRange := oWord:ActiveDocument:Range(Start:=0, End:=0) // Paramter bitte in Dokumentation nachsehen
oRange:Font:Name := "Arial"
oRange:Font:Size := 24
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13369
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Word Landscape

Beitragvon Rolf Ramacher » Mo, 24. Okt 2016 16:38

es gibt keine Fehlermeldung, aber auch keine Änderung.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1807
Registriert: Do, 09. Nov 2006 11:33
Wohnort: Bergheim

Re: Word Landscape

Beitragvon flanelli » Mo, 24. Okt 2016 22:19

Hallo Rolf,
der Lösungsansatz von Hubert mit dem Range-Objekt sollte jedenfalls klappen wenn du einen gültigen Bereich
definieren möchtest bzw. würdest bzw. kannst aber falls "Start" oder "End" sozusagen "out of range" ist dann klingelt der Postman twice :-)

Ich schreibe es mal ganz simpel etwas anders als Hubert
Code: Alles auswählen
oWord := CreateObject("Word.Application")
....
oDoc:= oWord:ActiveDocument
....
** ActiveDocument.Range(Start:=0, End:=0)
x1:=oDoc:Range(0, 100)    // 100 für End bedeutet 100 Zeichen
x1:Font:Name = "Courier New"
x1:Font:Size = 8

Wenn du nun nicht exakt die Anzahl der Zeichen im Dokument kennst dann wird entweder weniger Text als vorhanden
entsprechend behandelt oder du fliegst bei zu großen "End"-Wert eine Runde weil End ( z.B. willkürlich 100000 gesetzt )
eben "out of range" ist.

Daher wäre es in deinem Fall wohl besser du wählst gleich den ganzen Inhalt aus

Code: Alles auswählen
oWord := CreateObject("Word.Application")
oDoc:= oWord:ActiveDocument

oDoc:Content:Font:Name = "Courier New"
oDoc:Content:Font:Size = 8

oDoc:PrintOut(.T.)
...


Ich hoffe, ich habe dein Problem richtig verstanden uns mein Geschnipsel hilft dir weiter,

Gruß, Marcel
Ahoile aus dem Süden
flanelli
Cut&Paste-Entwickler
Cut&Paste-Entwickler
 
Beiträge: 26
Registriert: Di, 11. Mai 2010 16:27

Nächste

Zurück zu ActiveX

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast