marcoborn
Goto Top

Objekte als Teil einer Klasse möglich?

Hallo Forum,
ich möchte gern eine neue Klasse definieren:

imports Excel = Microsoft.Office.Interop.Excel
imports Word = Microsoft.Office.Interop.Word

Public Class Rohdatenklasse
  Public Inhalt As String
  Public Typ As String
  Public Bewertung As String
  Public Hintergrund As Excel.Interior
End Class

In einer 2. Klasse greife ich dann auf diese Klasse zu:
Dim Rohdaten As New Rohdatenklasse
Dim appXL as Excel.Application = Excel.Application.GetActiveInstance

'weiterer Code  

For i As Integer = 1 To 25
	Rohdaten.Hintergrund.ColorIndex = appXL.Cells(i,1).Interior.ColorIndex
Next

Bei dem Zuweisen des ColorIndex bekomme ich jedoch einen Laufzeitfehler. Ist es in VB.NET möglich, z.B. ein Excel-Objekt als Teil einer anderen Klasse zu definieren und wenn ja, wie weise ich dann den ColorIndex dem Element in meiner Klasse zu?

Vielen Dank,
M. Born

Content-Key: 460075

Url: https://administrator.de/contentid/460075

Printed on: April 19, 2024 at 09:04 o'clock

Member: SlainteMhath
SlainteMhath Jun 07, 2019 at 06:48:18 (UTC)
Goto Top
Moin,

bekomme ich jedoch einen Laufzeitfehler.
den du uns nicht nennen magst?

Objekte als Teil einer Klasse möglich?
Klar.

Public Class Rohdatenklasse
  Public Excel as  Excel.Application 
  ....

lg,
Slainte
Member: MarcoBorn
MarcoBorn Jun 07, 2019 at 06:55:47 (UTC)
Goto Top
Hallo,
die Fehlermeldung lautet:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei ClsDOKImportKlasse.DOKWordImport() in C:\Entwicklung\Import.vb:Zeile 148.

Leider hilft mir das nicht wirklich weiter....
Member: emeriks
Solution emeriks Jun 07, 2019 updated at 08:14:55 (UTC)
Goto Top
Hi,
Du musst zuerst
Rohdaten.Hintergrund
instantiieren. Erst dann dann kannst Du mit dessen Eigenschaften hantieren.

z.B. gleich in der Deklaraion
(beachte das "New")
Public Class Rohdatenklasse
  Public Inhalt As String
  Public Typ As String
  Public Bewertung As String
  Public Hintergrund As New Excel.Interior
End Class

Oder in der Schleife
For i As Integer = 1 To 25
	Rohdaten.Hintergrund = New Excel.Interior
	Rohdaten.Hintergrund.ColorIndex = appXL.Cells(i,1).Interior.ColorIndex
Next

E.
Member: MarcoBorn
MarcoBorn Jun 07, 2019 at 09:18:34 (UTC)
Goto Top
Hallo Emeriks,
vielen Dank für den Hinweis. Das Ganze funktioniert zwar noch nicht richtig, aber ich denke, damit komme ich schon mal weiter. Jetzt meckert Excel, dass Interior ein Interface und keine Klasse ist, aber das kann ich entsprechend anpassen.

Vielen Dank,
M. Born
Member: emeriks
emeriks Jun 07, 2019 at 09:22:52 (UTC)
Goto Top
Zitat von @MarcoBorn:
Das Ganze funktioniert zwar noch nicht richtig, aber ich denke, damit komme ich schon mal weiter. Jetzt meckert Excel, dass Interior ein Interface und keine Klasse ist, aber das kann ich entsprechend anpassen.
Ja, das kann sein. Ich habe das so auch nicht getestet. Es ging mir nur darum, das Prinzip zu verdeutlichen.
Viel Erfolg!