Word AddIn stürzt nich nachvollziehbar ab beim Einfügen von Bild

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von michivandersar.

    Word AddIn stürzt nich nachvollziehbar ab beim Einfügen von Bild

    Hallo zusammen,

    Ich habe ein für mich und meinen Kollegen ziemlich seltsames Phänomen. Es geht um ein Word AddIn, welches in unserer Firma die Erstellung von Dokumenten ein wenig automatisieren soll.

    Dabei werden z.B. Daten aus der Projektverwaltung und CRM direkt im Dokument eingefügt. Nebenbei wird auch unser Firmenheader (eine Bilddatei im .EMF-Format) in der Kopfzeile eingefügt.

    Das Ganze funktioniert eigentlich so wie es soll und ist auch produktiv im Einsatz. Nun zum seltsamen: Inzwischen haben wir zwei Benutzer, welche an ihren Systemen Probleme damit haben (das gesamte Word stürzt ab). Wenn sie sich jedoch an einem anderen System anmelden funktioniert es problemlos, genauso wie wenn ich mich an ihrem System anmelde.

    Nun zum Fehler. Ich habe das ganze ein wenig eingrenzen können und anscheinend passiert es nach dem Einfügen des Bildes in die Kopfzeile beim Setzen der Höhe und Breite. Nachfolgend mal der Code ausschnitt:

    VB.NET-Quellcode

    1. Try
    2. ThisAddIn.debug("Bild: " & RegistryAccess.HeaderImage)
    3. Dim pic As Word.InlineShape = Globals.ThisAddIn.Application.ActiveDocument.Sections(1).Headers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary). _
    4. Range.InlineShapes.AddPicture(RegistryAccess.HeaderImage)
    5. ThisAddIn.debug("Bild eingefügt")
    6. System.Threading.Thread.Sleep(1000)
    7. Dim h As Double = 1.2 * 28.34
    8. ThisAddIn.debug("höhe berechnet")
    9. Dim hs As Single = CSng(h)
    10. ThisAddIn.debug("höhe konvertiert")
    11. ThisAddIn.debug(pic.Height.ToString()) 'Diese Ausgabe kommt noch ins Log-File
    12. pic.Height = hs 'Vermuteter Absturz
    13. ThisAddIn.debug("Höhe gesetzt") 'Das kommt nicht mehr ins Log-File
    14. pic.Width = 17.5 * 28.34
    15. ThisAddIn.debug("Breite gesetzt")
    16. Catch exx As Exception
    17. ThisAddIn.debug(exx.ToString()) 'Kommt nicht zum Einsatz
    18. End Try

    Was mich am meisten daran verwirrt ist, dass die Catch-Funktion nicht greift... Die ThisAddIn.debug()-Methode schreibt jedoch ein Log-File und nach der Ausgabe der akutellen Höhe kommt dort nichts mehr, also muss er beim Befehl "pic.Height = hs" abstürzen.

    So, ich bin am Ende mit meinem Latein... Ich vermute, dass es an irgendwelchen Benutzereinstellungen liegt, weil es nicht flächendeckend auftaucht. Ich hoffe ich konnte mein Problem schildern, falls was unklar ist, bitte einfach fragen ;)

    Danke schonmal für alle die sich am Rätselraten beteiligen :D
    @michivandersar Wie wäre es mit einer Vorlage, in der die Kopfzeile schon drin ist?
    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!
    Das geht leider nicht, da der User entscheiden soll, ob er ein Bild drin haben möchte oder nicht (je nach Drucker haben wir Papier eingelegt wo der Kopf schon vorgedruckt ist, dann soll es natürlich nicht auf das Dokument). Ein anderer Fall ist, dass am Logo oder sonst wo etwas geändert wird. Deshalb soll das Bild von der Ablage eingefügt werden und nicht statisch im Dokument sein. Sonst müssten wir das immer in sämtlichen Vorlagen ändern/aktualisieren.
    @michivandersar Wie reagiert Word, wenn Du das Bild händisch einfügst?
    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!

    RodFromGermany schrieb:

    @michivandersar Wie reagiert Word, wenn Du das Bild händisch einfügst?


    Das war eine sehr gute Frage. Der Kollege mit dem Fehler hats ausprobiert und konnte schlussendlich das ganze Problem damit lösen, indem er in den Regionseinstellungen das Dezimaltrennzeichen von "," auf "." umgestellt hat.

    Allerdings kann ich selbst den Fehler damit nicht reproduzieren. Bei mir funktionierts, egal ob "," oder "." eingestellt ist...

    Edit: Nachdems bei ihm nun einmal funktioniert hat, kann er den Fehler selbst nicht mehr reproduzieren... Wenn das so funktionieren sollte, soll es mir recht sein, aber das Warum oder vielleicht sogar wie man das im Code abfangen könnte wäre toll :D

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