Laden...

Office Automatisierung ->File not found für die Assemblies

Letzter Beitrag vor 6 Monaten 8 Posts 661 Views
Office Automatisierung ->File not found für die Assemblies

Hallo,

habe vor ca. 4 Jahren das letzte mal was mit Interops und Office gemacht und komme jetzt nicht weiter.

Mein Code sieht folgendermaßen aus:

using ppt1 =Microsoft.Office.Interop.PowerPoint;
using word = Microsoft.Office.Interop.Word;
using excel = Microsoft.Office.Interop.Excel;

var axel = new excel.Application();
axel.Visible = true;
// See https://aka.ms/new-console-template for more information
//Console.WriteLine("Hello, World!");
//var a = new ppt1.Application();
// var w = new word.Application();
// w.Visible = true;
//a.Visible = true;

Die Nuget-Packages sind alle installiert und vs2022 hat alle Updates und ich erhalte immer eine FileNotFoundException

"System.IO.FileNotFoundException: "Could not load file or assembly 'office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c'. Das System kann die angegebene Datei nicht finden."

ch hoffe ihr könnt mir etwas weiter helfen.

Viele Grüße

Bigeddie

Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉

Hast du denn auch die passende Office-Version 15 (Office 2013) bei dir lokal installiert?

Bei neueren Versionen benötigst du auch geänderte referenzierte Assemblies. Evtl. hilft dir dabei NetOffice (ich weiß aber nicht, ob das noch aktuell ist?).

Weil Du schreibst, dass Du schon länger nicht mehr mit Office zutun hattest: Interop Schnittstellen sind seit über 10 Jahre abgekündigt und die einzig aktuelle Client-API ist die JavaScript-API. Einige Client-APIs haben sich auch in die Office 365 HTTP APIs (Serverseitig) verlagert. Gewisse Automatismen muss man also gegen deren HTTP API Endpunkt ausführen, nicht mehr gegen den Client.
Die neuen Office-Versionen lassen sich bereits mit Interop nicht mehr automatisieren.


Wenn Du Dokumente automatisieren willst, dann verwende das OpenXML SDK.

Zitat von bigeddie

ch hoffe ihr könnt mir etwas weiter helfen.

Wenn es nicht zwingend notwendig ist, dann arbeite nicht direkt mit Office.Interop. Siehe hier:

https://mycsharp.de/forum/posts/3842033

Zitat von Palladin007

Lieber mit Hilfe von DocumentFormat.OpenXml, oder - mein Favorit - Du nutzt das Framework ClosedXml, was das durchaus komplexe OpenXml-ObjektModel deutlich vereinfacht.

Gruss
Alf

Habe ein ABO für microsoft365. Habe jetzt mal COM-Komponente für PowerPoint probiert. PowerPoint wird instanziiert, aber beim Versuch die Instanz sichtbar zu machen

var pt = new ppt1.Application();
pt.Visible = true;

erhalte ich folgende Meldung: "Schweregrad    Code    Beschreibung    Projekt    Datei    Zeile    Unterdrückungszustand    Details
Fehler (aktiv)    CS0012    Der Typ "MsoTriState" ist in einer nicht referenzierten Assembly definiert. Fügen Sie einen Verweis auf die Assembly "office, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" hinzu.    ConsoleApp1    C:\testsppt1\ConsoleApp1\ConsoleApp1\Program.cs    6"

Vielen Dank

Bigeddie

Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉

Du wirst die notwendigen Interop-Assemblies nicht installiert haben. Siehe Hinweis von  Th69.

Musst bei der Visual Studio Installation das "Office Development" mit aktivieren; geht auch nachträglich über den Visual Studio Installer.


Bezogen auf Deine Signatur: man muss halt auch die Antwort lesen, wenn man jemand fragt, der es weiß.

Zitat von bigeddie

Habe ein ABO für microsoft365.

Wenn du nur den Online-Zugriff mittels Microsoft 365 Online hast, dann funktioniert damit kein Office Interop. Du benötigst schon die lokale Office Installation.

Wie die anderen aber schon geschrieben haben, ist die Frage, ob du wirklich Office Interop benötigst oder doch nur reine Dokumentenbearbeitung durchführen möchtest?

Hast du denn ein bestehendes, altes Projekt, das du aktualisieren möchtest oder geht es um ein neues?

Hallo,

Vielen Dank für eure Hilfe! Habe jetzt mal wieder das Kerbholz, die Knotenschnur und den Abakus ausgepackt und Pergament und Federkiel für Notizen bereitgelegt. Chef macht das HB-Männchen. Ist eh meine letzte Woche, dann geht es zur ESP32-Konfiguration. Soll sein Freund aus Fernost das Projekt umsetzen. VBA wollte er nicht.

Nochmal vielen Dank

Grüße Bigeddie

Man muß nichts wissen,
man muß nur wissen wer es wissen könnte
oder wo es steht😉