Discussion:
Microsoft.Office.Interop.Excel funktioniert nicht
(zu alt für eine Antwort)
Ewald B.
2004-05-12 08:42:02 UTC
Permalink
Hallo NG,

ich möchte mit Excel unter c# arbeiten. Dabei sollte ich einen Verweis auf
die Excel-Bilbiliothek hinzufügen (bei mir Mircosoft Excel 10.0 Object
Libary). Anschliessend sollte ich folgende Zeile in mein Programm eingeben.

using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;

Die erste Zeile wird akeptiert, bei der zweiten gibt es jedoch folgende
Fehlermeldung:

Der Type oder Namespacename 'Interop' ist in der Klasse oder dem Namespace
'Microsoft.Office' nicht vorhanden (fehlt ein Assemblyverweis?)

Wie kann ich dieses Problem beheben?
Giovanni Rena
2004-05-12 09:15:00 UTC
Permalink
Hallo

Im Menü

Projek/Verweis hinzufügen/Com

Excel auswählen, und noch mal probieren

Gruß Giovanni
Ewald B.
2004-05-12 09:24:24 UTC
Permalink
Hallo,

klappt nicht. Ich habe Excel 2000. Unter den Verweisen in
Projektmappenexplorer steht:

Microsoft.Office.Core
Excel
System
...

Wer kann helfen?
Post by Giovanni Rena
Hallo
Im Menü
Projek/Verweis hinzufügen/Com
Excel auswählen, und noch mal probieren
Gruß Giovanni
nico effenberger
2004-05-12 11:15:51 UTC
Permalink
hi,
ich hatte ein ähnliches problem
schau mal unter:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;302084

nico
Post by Ewald B.
Hallo,
klappt nicht. Ich habe Excel 2000. Unter den Verweisen in
Microsoft.Office.Core
Excel
System
...
Wer kann helfen?
Post by Giovanni Rena
Hallo
Im Menü
Projek/Verweis hinzufügen/Com
Excel auswählen, und noch mal probieren
Gruß Giovanni
Arne Janning
2004-05-12 12:55:10 UTC
Permalink
Post by Ewald B.
ich möchte mit Excel unter c# arbeiten. Dabei sollte ich einen Verweis auf
die Excel-Bilbiliothek hinzufügen (bei mir Mircosoft Excel 10.0 Object
Libary). Anschliessend sollte ich folgende Zeile in mein Programm eingeben.
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
Die erste Zeile wird akeptiert, bei der zweiten gibt es jedoch folgende
Der Type oder Namespacename 'Interop' ist in der Klasse oder dem Namespace
'Microsoft.Office' nicht vorhanden (fehlt ein Assemblyverweis?)
Wie kann ich dieses Problem beheben?
Hallo Ewald,

ich vermute, Dein Problem entsteht, während Du versuchst, das
Programmbeispiel umzusetzen, daß ich Dir gestern gepostet habe.

(In Zukunft Anschlussfragen in dem Thread stellen, in dem auch schon die
Antwort gegeben wurde, dort wird es leichter gefunden und der Kontext
ist gleich klar.)

Deine Aussagen, welche Excel-Version Du verwendest, ist widersprüchlich:
Microsoft Excel 10.0 Object Library ist Excel XP (2002), Excel 2000 wäre
9.0. Für die Fernsteuerung von C# aus ist die Versionsnummer wichtig:
Für Excel XP bekommst Du sogenannte Primary Interop Assemblies, für
Excel 2000 AFAIK nicht. Was heisst das alles?

Damit Du eine COM-Klassenbibliothek wie eben die "Microsoft Excel 10.0
Object Library" nutzen kannst, musst Du einen Verweis auf die Bibliothek
einrichten (im Projektmappenexplorer oder im Menu Projekt|Verweise. Die
Excel-Klassenbibliothek findet Du unter "COM" --> Microsoft Excel x.0
Object Library. Nach der Auswahl der Bibliothek erstellt die
Entwicklungsumgebung eine sogenannte Wrapper-Bibliothek, die die
Schnittstelle zwischen COM und .NET bildet. Mit dem Objektbrowser kannst
Du die Klassen dann anschauen.

Das alles wäre an sich kein Problem, wenn diese Wrapper-Bibliothek denn
wenigstens vollständig wäre. Meine eigenen Versuche mit der Excel
2000-Bibliothek ergaben, dass ein Großteil der Klassen fehlt, was die
weitere Programmierung auf diesem Weg unmöglich macht. Man sollte mit
Late-Binding weiterarbeiten.

MS hat das Problem erkannt und stellt seit geraumer Zeit sogenannte
"Primary Interop Assemblies (PIAs)" zur Verfügung, das sind nichts
anderes als vorgefertigte Wrapper-Bibliotheken, und im Gegensatz zu den
von VS.NET generierten auch vollständig. Diese PIAs gibt es aber AFAIK
nur für Office 2003 und XP. Wenn Du also Excel XP benutzen solltest,
bekommst Du die PIAs hier:
http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en

Wenn Du die PIAs installiert hast und dann einen Verweis auf die
Microsoft Excel 10.0 Object Library setzt, wird die Excel-PIA
automatisch benutzt und der von mir gepostete Code wird so, wie er ist,
funktionieren. Wenn Du Excel 2000 benutzt, bekommst Du keine PIAs, musst
Du also mit dem arbeiten, was VS.NET generiert. Möglicherweise muss
dann auch die using-Anweisung anders heissen, vielleicht nur
Interop.Excel, bin mir aber nicht sicher, habe im Moment nur Zugriff auf
Office 2003.

Ansonsten eben Late-Binding verwenden, ein guter Ausgangspunkt, wie man
so etwas macht, ist hier:
http://support.microsoft.com/?kbid=302902

Gruß

Arne Janning
Wolfgang Ketterer
2004-05-13 07:14:56 UTC
Permalink
Hallo,

bei Excel 2000 lautet die using-Anweisung einfach using Excel;

Zur Application kommt man dann mit

Excel.Application excelApp = new Excel.ApplicationClass();

für eine neue Instanz. Für ein bereits geöffnetes Excel dann so:

Excel.Application excelApp =
(Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

Gruß Wolle


On Wed, 12 May 2004 14:55:10 +0200, Arne Janning
Post by Arne Janning
Post by Ewald B.
ich möchte mit Excel unter c# arbeiten. Dabei sollte ich einen Verweis auf
die Excel-Bilbiliothek hinzufügen (bei mir Mircosoft Excel 10.0 Object
Libary). Anschliessend sollte ich folgende Zeile in mein Programm eingeben.
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
Die erste Zeile wird akeptiert, bei der zweiten gibt es jedoch folgende
Der Type oder Namespacename 'Interop' ist in der Klasse oder dem Namespace
'Microsoft.Office' nicht vorhanden (fehlt ein Assemblyverweis?)
Wie kann ich dieses Problem beheben?
Hallo Ewald,
ich vermute, Dein Problem entsteht, während Du versuchst, das
Programmbeispiel umzusetzen, daß ich Dir gestern gepostet habe.
(In Zukunft Anschlussfragen in dem Thread stellen, in dem auch schon die
Antwort gegeben wurde, dort wird es leichter gefunden und der Kontext
ist gleich klar.)
Microsoft Excel 10.0 Object Library ist Excel XP (2002), Excel 2000 wäre
Für Excel XP bekommst Du sogenannte Primary Interop Assemblies, für
Excel 2000 AFAIK nicht. Was heisst das alles?
Damit Du eine COM-Klassenbibliothek wie eben die "Microsoft Excel 10.0
Object Library" nutzen kannst, musst Du einen Verweis auf die Bibliothek
einrichten (im Projektmappenexplorer oder im Menu Projekt|Verweise. Die
Excel-Klassenbibliothek findet Du unter "COM" --> Microsoft Excel x.0
Object Library. Nach der Auswahl der Bibliothek erstellt die
Entwicklungsumgebung eine sogenannte Wrapper-Bibliothek, die die
Schnittstelle zwischen COM und .NET bildet. Mit dem Objektbrowser kannst
Du die Klassen dann anschauen.
Das alles wäre an sich kein Problem, wenn diese Wrapper-Bibliothek denn
wenigstens vollständig wäre. Meine eigenen Versuche mit der Excel
2000-Bibliothek ergaben, dass ein Großteil der Klassen fehlt, was die
weitere Programmierung auf diesem Weg unmöglich macht. Man sollte mit
Late-Binding weiterarbeiten.
MS hat das Problem erkannt und stellt seit geraumer Zeit sogenannte
"Primary Interop Assemblies (PIAs)" zur Verfügung, das sind nichts
anderes als vorgefertigte Wrapper-Bibliotheken, und im Gegensatz zu den
von VS.NET generierten auch vollständig. Diese PIAs gibt es aber AFAIK
nur für Office 2003 und XP. Wenn Du also Excel XP benutzen solltest,
http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en
Wenn Du die PIAs installiert hast und dann einen Verweis auf die
Microsoft Excel 10.0 Object Library setzt, wird die Excel-PIA
automatisch benutzt und der von mir gepostete Code wird so, wie er ist,
funktionieren. Wenn Du Excel 2000 benutzt, bekommst Du keine PIAs, musst
Du also mit dem arbeiten, was VS.NET generiert. Möglicherweise muss
dann auch die using-Anweisung anders heissen, vielleicht nur
Interop.Excel, bin mir aber nicht sicher, habe im Moment nur Zugriff auf
Office 2003.
Ansonsten eben Late-Binding verwenden, ein guter Ausgangspunkt, wie man
http://support.microsoft.com/?kbid=302902
Gruß
Arne Janning
Ewald B.
2004-05-13 11:55:07 UTC
Permalink
Post by Ewald B.
Hallo,
bei Excel 2000 lautet die using-Anweisung einfach using Excel;
Zur Application kommt man dann mit
Excel.Application excelApp = new Excel.ApplicationClass();
Excel.Application excelApp =
(Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("E
xcel.Application");
Post by Ewald B.
Gruß Wolle
On Wed, 12 May 2004 14:55:10 +0200, Arne Janning
Post by Arne Janning
Post by Ewald B.
ich möchte mit Excel unter c# arbeiten. Dabei sollte ich einen Verweis auf
die Excel-Bilbiliothek hinzufügen (bei mir Mircosoft Excel 10.0 Object
Libary). Anschliessend sollte ich folgende Zeile in mein Programm eingeben.
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
Die erste Zeile wird akeptiert, bei der zweiten gibt es jedoch folgende
Der Type oder Namespacename 'Interop' ist in der Klasse oder dem Namespace
'Microsoft.Office' nicht vorhanden (fehlt ein Assemblyverweis?)
Wie kann ich dieses Problem beheben?
Hallo Ewald,
ich vermute, Dein Problem entsteht, während Du versuchst, das
Programmbeispiel umzusetzen, daß ich Dir gestern gepostet habe.
(In Zukunft Anschlussfragen in dem Thread stellen, in dem auch schon die
Antwort gegeben wurde, dort wird es leichter gefunden und der Kontext
ist gleich klar.)
Microsoft Excel 10.0 Object Library ist Excel XP (2002), Excel 2000 wäre
Für Excel XP bekommst Du sogenannte Primary Interop Assemblies, für
Excel 2000 AFAIK nicht. Was heisst das alles?
Damit Du eine COM-Klassenbibliothek wie eben die "Microsoft Excel 10.0
Object Library" nutzen kannst, musst Du einen Verweis auf die Bibliothek
einrichten (im Projektmappenexplorer oder im Menu Projekt|Verweise. Die
Excel-Klassenbibliothek findet Du unter "COM" --> Microsoft Excel x.0
Object Library. Nach der Auswahl der Bibliothek erstellt die
Entwicklungsumgebung eine sogenannte Wrapper-Bibliothek, die die
Schnittstelle zwischen COM und .NET bildet. Mit dem Objektbrowser kannst
Du die Klassen dann anschauen.
Das alles wäre an sich kein Problem, wenn diese Wrapper-Bibliothek denn
wenigstens vollständig wäre. Meine eigenen Versuche mit der Excel
2000-Bibliothek ergaben, dass ein Großteil der Klassen fehlt, was die
weitere Programmierung auf diesem Weg unmöglich macht. Man sollte mit
Late-Binding weiterarbeiten.
MS hat das Problem erkannt und stellt seit geraumer Zeit sogenannte
"Primary Interop Assemblies (PIAs)" zur Verfügung, das sind nichts
anderes als vorgefertigte Wrapper-Bibliotheken, und im Gegensatz zu den
von VS.NET generierten auch vollständig. Diese PIAs gibt es aber AFAIK
nur für Office 2003 und XP. Wenn Du also Excel XP benutzen solltest,
http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71
-A6B4-01FEBA508E52&displaylang=en
Post by Ewald B.
Post by Arne Janning
Wenn Du die PIAs installiert hast und dann einen Verweis auf die
Microsoft Excel 10.0 Object Library setzt, wird die Excel-PIA
automatisch benutzt und der von mir gepostete Code wird so, wie er ist,
funktionieren. Wenn Du Excel 2000 benutzt, bekommst Du keine PIAs, musst
Du also mit dem arbeiten, was VS.NET generiert. Möglicherweise muss
dann auch die using-Anweisung anders heissen, vielleicht nur
Interop.Excel, bin mir aber nicht sicher, habe im Moment nur Zugriff auf
Office 2003.
Ansonsten eben Late-Binding verwenden, ein guter Ausgangspunkt, wie man
http://support.microsoft.com/?kbid=302902
Gruß
Arne Janning
Wolfgang Ketterer
2004-05-13 07:07:43 UTC
Permalink
Hallo,

bei Excel 2000 lautet die using-Anweisung einfach using Excel;

Zur Application kommt man dann mit

Excel.Application excelApp = new Excel.ApplicationClass();

für eine neue Instanz. Für ein bereits geöffnetes Excel dann so:

Excel.Application excelApp =
(Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

Gruß Wolle


On Wed, 12 May 2004 14:55:10 +0200, Arne Janning
Post by Arne Janning
Post by Ewald B.
ich möchte mit Excel unter c# arbeiten. Dabei sollte ich einen Verweis auf
die Excel-Bilbiliothek hinzufügen (bei mir Mircosoft Excel 10.0 Object
Libary). Anschliessend sollte ich folgende Zeile in mein Programm eingeben.
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Excel;
Die erste Zeile wird akeptiert, bei der zweiten gibt es jedoch folgende
Der Type oder Namespacename 'Interop' ist in der Klasse oder dem Namespace
'Microsoft.Office' nicht vorhanden (fehlt ein Assemblyverweis?)
Wie kann ich dieses Problem beheben?
Hallo Ewald,
ich vermute, Dein Problem entsteht, während Du versuchst, das
Programmbeispiel umzusetzen, daß ich Dir gestern gepostet habe.
(In Zukunft Anschlussfragen in dem Thread stellen, in dem auch schon die
Antwort gegeben wurde, dort wird es leichter gefunden und der Kontext
ist gleich klar.)
Microsoft Excel 10.0 Object Library ist Excel XP (2002), Excel 2000 wäre
Für Excel XP bekommst Du sogenannte Primary Interop Assemblies, für
Excel 2000 AFAIK nicht. Was heisst das alles?
Damit Du eine COM-Klassenbibliothek wie eben die "Microsoft Excel 10.0
Object Library" nutzen kannst, musst Du einen Verweis auf die Bibliothek
einrichten (im Projektmappenexplorer oder im Menu Projekt|Verweise. Die
Excel-Klassenbibliothek findet Du unter "COM" --> Microsoft Excel x.0
Object Library. Nach der Auswahl der Bibliothek erstellt die
Entwicklungsumgebung eine sogenannte Wrapper-Bibliothek, die die
Schnittstelle zwischen COM und .NET bildet. Mit dem Objektbrowser kannst
Du die Klassen dann anschauen.
Das alles wäre an sich kein Problem, wenn diese Wrapper-Bibliothek denn
wenigstens vollständig wäre. Meine eigenen Versuche mit der Excel
2000-Bibliothek ergaben, dass ein Großteil der Klassen fehlt, was die
weitere Programmierung auf diesem Weg unmöglich macht. Man sollte mit
Late-Binding weiterarbeiten.
MS hat das Problem erkannt und stellt seit geraumer Zeit sogenannte
"Primary Interop Assemblies (PIAs)" zur Verfügung, das sind nichts
anderes als vorgefertigte Wrapper-Bibliotheken, und im Gegensatz zu den
von VS.NET generierten auch vollständig. Diese PIAs gibt es aber AFAIK
nur für Office 2003 und XP. Wenn Du also Excel XP benutzen solltest,
http://www.microsoft.com/downloads/details.aspx?FamilyId=C41BD61E-3060-4F71-A6B4-01FEBA508E52&displaylang=en
Wenn Du die PIAs installiert hast und dann einen Verweis auf die
Microsoft Excel 10.0 Object Library setzt, wird die Excel-PIA
automatisch benutzt und der von mir gepostete Code wird so, wie er ist,
funktionieren. Wenn Du Excel 2000 benutzt, bekommst Du keine PIAs, musst
Du also mit dem arbeiten, was VS.NET generiert. Möglicherweise muss
dann auch die using-Anweisung anders heissen, vielleicht nur
Interop.Excel, bin mir aber nicht sicher, habe im Moment nur Zugriff auf
Office 2003.
Ansonsten eben Late-Binding verwenden, ein guter Ausgangspunkt, wie man
http://support.microsoft.com/?kbid=302902
Gruß
Arne Janning
Loading...