This project has moved. For the latest updates, please go here.

(SOLVED) (DE) Problem mit PageSetup-Befehlen

Jul 9, 2015 at 5:09 PM
Hey,

ich nutze die aktuelle Version von NetOffice und finde die echt Klasse!
Allerdings komme ich bei mir auf einen Fehler, wenn ich diesen Code nutzen möchte

obj_XLWks.PageSetup.FitToPagesWide = 1
obj_XLWks.PageSetup.FitToPagesTall = 0

Daraufhin bekam ich folgendes
ex.Exception.Message => ​See inner exception(s) for details.
ex.InnerException.Message => Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace =>bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
bei System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
bei NetOffice.Invoker.PropertySet(COMObject comObject, String name, Object[] value) in c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice\Invoker.cs:Zeile 876

Ich weiß damit jetzt nichts anzufangen, ist der Befehl falsch oder ist das ein Bug in NetOffice

Ich bin Dankbar für jede Rückmeldung.

LG
Axel
Coordinator
Jul 9, 2015 at 5:28 PM
Für den Zugriff auf PageSetup muss ein Drucker eingerichtet sein und der Spooler Service laufen(was er per voreinstellung auch tut).
Das ist in Office leider so. Hat mit NetOffice an sich nix zu tun. Schau mal in die inner exception(s) ob da noch was genaueres drin steht.

*Sebastian
Jul 9, 2015 at 5:41 PM
Ohne den Teil funktioniert der Code bestens, nur bei diesem springt er raus.
See inner exception(s) for details.   

bei NetOffice.Invoker.PropertySet(COMObject comObject, String name, Object[] value) in c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice\Invoker.cs:Zeile 881.
   bei NetOffice.ExcelApi.PageSetup.set_FitToPagesTall(Object value) in c:\Users\Sebastian\Desktop\Kopie von Source\Excel\DispatchInterfaces\PageSetup.cs:Zeile 481.
   bei SpediGonzales.mod_Drucken.sub_Druck_AVListe(String pustr_TourPrefix, String pustr_TourNr) in C:\Users\Axel\Documents\Visual Studio 2013\Projects\SpediGonzales\SpediGonzales\mod_Drucken.vb:Zeile 820.
Ein Aufrufziel hat einen Ausnahmefehler verursacht.

StackTrace>>   bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   bei System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
   bei NetOffice.Invoker.PropertySet(COMObject comObject, String name, Object[] value) in c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice\Invoker.cs:Zeile 876.

HResult>>-2146232828

Source>>mscorlib

Data>>System.Collections.ListDictionaryInternal
Habe ich etwas vergessen zu posten?
Coordinator
Jul 9, 2015 at 6:12 PM
Stackoverflow sagt dazu:

" if you need to set PageSetup.FitToPagesWide and you do not want to set PageSetup.FitToPagesTall you will need to set this value to false instead of an integer."

http://stackoverflow.com/questions/2509583/excel-2007-pagesetup-fittopageswide-issue

0 scheint in dem Fall nicht akzeptiert zu sein sondern false.

*Sebastian
Jul 10, 2015 at 4:42 PM
Hey Sebastian,
besten Dank für den Tipp, aber das hatte ich schon in einem VB-Forum.

Ich habe den Code wie folgt geändert. Erste/Dritte Zeile habe ich auskommentiert.
        'obj_XLWks.PageSetup.Zoom = False
        obj_XLWks.PageSetup.FitToPagesWide = True
        'obj_XLWks.PageSetup.FitToPagesTall = 0
See inner exception(s) for details.   bei NetOffice.Invoker.PropertySet(COMObject comObject, String name, Object[] value) in c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice\Invoker.cs:Zeile 881.
   bei NetOffice.ExcelApi.PageSetup.set_FitToPagesWide(Object value) in c:\Users\Sebastian\Desktop\Kopie von Source\Excel\DispatchInterfaces\PageSetup.cs:Zeile 510.
   bei SpediGonzales.mod_Drucken.sub_Druck_AVListe(String pustr_TourPrefix, String pustr_TourNr) in C:\Users\Axel\Documents\Visual Studio 2013\Projects\SpediGonzales\SpediGonzales\mod_Drucken.vb:Zeile 819.
Ein Aufrufziel hat einen Ausnahmefehler verursacht.
StackTrace>>   bei System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
   bei System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   bei System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
   bei NetOffice.Invoker.PropertySet(COMObject comObject, String name, Object[] value) in c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice\Invoker.cs:Zeile 876.HResult>>-2146232828
Source>>mscorlib
Data>>System.Collections.ListDictionaryInternal
Jul 10, 2015 at 7:07 PM
Ich habe jetzt noch etwas drüber nachgedacht:
FitToPage kann unter keinen erdenklichen Umständen Boolean-Werte annehmen, denn ich kann in dieser Einstellung innerhalb Excel sagen, skaliere mir den Tabelleninhalt auf maximal n-Seiten breit. Da passt kein Wahr/Falsch.

Jedoch auch umgedreht hat Wahr/Falsch immer die Bedeutung 1/0, d.h. die Werte die ich dort eingegeben habe, sollten Boolean-Werte angenommen haben.

Also stimmt doch eher was an der Bibliothek nicht, als an dem Programm oder übersehe ich da etwas???
Coordinator
Jul 10, 2015 at 8:00 PM
Ich kann dir nicht wirklich folgen aber folgender Code funktioniert bei mir, so wie auch in dem verlinkten Topic auf Stackoverflow beschrieben:

workSheet.PageSetup.FitToPagesWide = 1;
workSheet.PageSetup.FitToPagesTall = false;

(Du hast allerdings irgendwie was anderes gemacht. Das Problem liegt/lag ja bei FitToPagesTall und nicht bei FitToPagesWide dem du irrtümlich einen boolean Wert zuweist.)

*Sebastian
Marked as answer by axelwickenkamp on 7/11/2015 at 1:53 AM
Jul 11, 2015 at 7:40 AM
Warum steht in den Fehlermeldungen teilweise ein Pfad der eindeutig auf Alex seine Verzeichnisstruktur hinweist und andererseits aber auch Pfade, die auf Deine (Sebastian) persönliche Verzeichnisstruktur hinweisen?
Mich irritiert das sehr, mag aber nichts zu bedeuten haben....
Jul 11, 2015 at 8:48 AM
Moin Moin,

das meine Verzeichnisstruktur auftaucht mag daran liegen, dass ich vorübergehend so viel wie möglich an Fehlermeldung einblende. Darum u.a. die Source des Fehlers => Zeile 819

-> Sebastian
Danke, der Code läuft ohne Fehler durch. Ich habe den Post so interpretiert, dass beide auf True/False gestellt werden müssten. Allerdings im Ergebnis macht er nicht das was er soll. Das lag aber daran, dass hier auch der Zoom deaktiviert werden muss.

Mein Code lautet wie folgt:
            obj_XLWks.PageSetup.Zoom = False
            obj_XLWks.PageSetup.FitToPagesWide = 1
            obj_XLWks.PageSetup.FitToPagesTall = False
Marked as answer by axelwickenkamp on 7/11/2015 at 1:53 AM
Coordinator
Jul 11, 2015 at 10:19 AM
Hallo,

Diese Pfade ("c:\Users\Sebastian\Desktop\Kopie von Source\NetOffice") stammen aus den mitgelieferten .pdb Dateien.

Für die die es nicht wissen:
.PDB sind Symbol Dateien für den Debugger, damit wird es möglich auch direkt in den Original NetOffice Code zu springen(sofern vorhanden), Haltepunkte zu setzen, überwachen, etc. Beim ersten mal fragt die IDE 1x nach wo der Code liegt und merkt sich diese Pfadangabe. (Bezieht man die PDB's über einen Symbolserver kann der Code auch von da ohne Nachfrage nachgeladen werden)

Gefällt mir auch nicht unbedingt das in der .pdb die Originalpfade einkodiert sind. Es gibt allerdings, zumindest in VS ein paar Einstellungsmöglichkeiten was in der PDB stehen soll. Ich hab mich damit aber noch nicht beschäftigt und alles in der Default Einstellung belassen.
Bei Gelegenheit gehe ich das Thema aber nochmal an.

*Sebastian