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-ID: 460075

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

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

SlainteMhath
SlainteMhath 07.06.2019 um 08:48:18 Uhr
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
MarcoBorn
MarcoBorn 07.06.2019 um 08:55:47 Uhr
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....
emeriks
Lösung emeriks 07.06.2019 aktualisiert um 10:14:55 Uhr
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.
MarcoBorn
MarcoBorn 07.06.2019 um 11:18:34 Uhr
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
emeriks
emeriks 07.06.2019 um 11:22:52 Uhr
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!