Probleme mit NetOffice/Excel und der Seitenformatierung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von kurzda.

    Probleme mit NetOffice/Excel und der Seitenformatierung

    Guten Morgen,
    ich habe in meinem Programm NetOffice in Version 1.7.3 eingebunden und versuche unterschiedliche Dokumente zu generieren. Das klappt auch,
    nur scheitert es an der Seitenformatierung.

    Vor einigen Monaten klappte bei gleichen Einstellungen alles einwandfrei. Jetzt musste ich mein System neu aufsetzen und das gleiche Programm mit den gleichen Einstellungen, gleichen Druckereinstellungen etc. erstellt mir jetzt Seiten, die nicht mehr auf eine DIN-A4 Seite passt.
    An dem Code habe ich nichts geändert und der Drucker ist auch der gleiche.

    Woran kann so etwas liegen?

    In diesem Zusammenhang musste ich mir dann überlegen, wie ich trotzdem alles auf eine Seite breit bekomme und benutze aus Excel die bekannte Funktion "Anpassen auf 1 Seite breit" oder engl. FitToPagesWide.
    Bei diesem Punkt streikt mein Programm und erhalte folgende Fehlermeldung

    Quellcode

    1. ​See inner exception(s) for details.
    2. Ein Aufrufziel hat einen Ausnahmefehler verursacht.


    Meine Befehle zur Seitenformatierung sehen so aus

    VB.NET-Quellcode

    1. ' Seitenformatierung
    2. obj_XLWks.PageSetup.PaperSize = Excel.Enums.XlPaperSize.xlPaperA4
    3. obj_XLWks.PageSetup.Orientation = Excel.Enums.XlPageOrientation.xlLandscape
    4. obj_XLWks.PageSetup.CenterHorizontally = True
    5. obj_XLWks.PageSetup.LeftMargin = 18 ' = 0,64 cm Formel = cm * 0,283464567
    6. obj_XLWks.PageSetup.RightMargin = 18
    7. obj_XLWks.PageSetup.TopMargin = 18 ' = 0,64 cm
    8. obj_XLWks.PageSetup.BottomMargin = 18
    9. obj_XLWks.PageSetup.PrintTitleRows = "$1:$9"
    10. obj_XLWks.PageSetup.FitToPagesWide = 1
    11. obj_XLWks.PageSetup.FitToPagesTall = 0


    Wie bekomme ich raus, was ich bei FitToPagesWide/Tall angeben muss, damit das Programm das akzeptiert??

    kurzda schrieb:

    Ausnahmefehler
    Gugst Du hier.

    kurzda schrieb:

    VB.NET-Quellcode

    1. obj_XLWks.PageSetup.FitToPagesWide = 1
    Gub mal statt der 1 da ein True ein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey, danke für den Tipp aber das wird nichts.
    In Excel kann man ja auch sagen, auf wie viele Seite man die Tabellen skalieren möchte.
    Aber echt Danke für die Idee

    [edited by kurzda 20:33]
    Was ich gerade herausgefunden habe ist, dass die bereits bestehenden Werte INT32 sind und jeweils eine 1 beinhalten, also die Zahlenangabe ist schon richtig.
    Wie kann ich den Fehler konkretisieren? Die Meldung sagt ja nix aus oder?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „kurzda“ ()

    Okay, ich hätte umfassender schreiben sollen. Mein Fehlerhandling sieht erst einmal so aus: sub_Meldung(ex.Message & vbNewLine & ex.InnerException.Message, Warnstufe.Fehler)
    Die obige Fehlermeldung unterteilt sich in zwei Ebenen

    1. Ebene = ex.Message = See inner exception(s) for details.
    2. Ebene = ex.InnerExceptions.Message = Ein Aufrufziel hat einen Ausnahmefehler verursacht.

    Sorry für das Missverständnis.
    Also der Fehler tritt hier auf:

    VB.NET-Quellcode

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


    Quellcode

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


    Also ich kenne jetzt zwar nicht was ein StackTrace ist, aber das Verzeichnis was da aufgerufen wird (C:\Users\Sebastian...) passt hinten und vorne nicht.
    Jetzt könnte man meinen, weil ich gerade das Update von NetOffice gemacht habe, dass es daran liegt, aber ich hatte die gleichen Probleme unter NetOffice 1.5.3.
    Das Problem hat mich dazu geleitet mal das Update auf 1.7 zu machen, hilft aber nicht.
    Bilder
    • Verweise.PNG

      33,29 kB, 1.103×256, 142 mal angesehen
    es mag die Frage aufwerfen, ist aber auch schon beantwortet, aber nur um sicher zu gehen

    VB.NET-Quellcode

    1. ​ obj_XLWks.PageSetup.Zoom = False
    2. obj_XLWks.PageSetup.FitToPagesWide = True
    3. obj_XLWks.PageSetup.FitToPagesTall = False


    Gleiche Fehlermeldung.

    kurzda schrieb:

    Fehlermeldung
    Kannst Du mal Dein Projekt anhängen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    kurzda schrieb:



    Also ich kenne jetzt zwar nicht was ein StackTrace ist, aber das Verzeichnis was da aufgerufen wird (C:\Users\Sebastian...) passt hinten und vorne nicht.
    Jetzt könnte man meinen, weil ich gerade das Update von NetOffice gemacht habe, dass es daran liegt, aber ich hatte die gleichen Probleme unter NetOffice 1.5.3.
    Das Problem hat mich dazu geleitet mal das Update auf 1.7 zu machen, hilft aber nicht.


    Du weißt aber, dass der Entwickler von NetOffice Sebastian heißt? Wende Dich doch mit einer direkten Frage an Sebastian. Englisch oder Deutsch ist egal.
    netoffice.codeplex.com/discussions

    Viel Erfolg
    Danke RodFromGermany, aber ich möchte ungern mein ganzes Projekt an andere schicken. Ich habe da jetzt schon 1 Jahr reingesteckt und möchte nichts riskieren.

    Auch dir Dksksm ein Danke, ich habe mich flux registriert und einen Thread erstellt. Mal schauen, was dabei rum kommt.

    Dennoch bin ich für jede Hilfe dankbar, deshalb kann auch weiterhin hier geantwortet werden.
    Wenn ich eine funktionierende Lösung bei CodePlex erhalte, poste ich diese hier selbstverständlich.

    Danke, Axel
    So, mit Sebastian zusammen konnte ich dem Rätsel auf die Spur kommen.

    VB.NET-Quellcode

    1. ​ obj_XLWks.PageSetup.Zoom = False
    2. obj_XLWks.PageSetup.FitToPagesWide = 1
    3. obj_XLWks.PageSetup.FitToPagesTall = False


    Das ist ein funktionierender Code. Die Schwierigkeit hieran war, dass nur ein Wert eine Zahl haben darf und der andere ein boolescher Wert. Zusätzlich genau wie in Excel muss auch hier der Zoom deaktiviert werden.

    Danke an alle anderen. Problem gelöst.