Zeilen in Excel einfügen per VB.net-code

LunaSun

Mitglied
hallo zusammen.

ich will mit vb.net auf excel zugreifen und dann ab einer bestimmten zeile (25) weitere zeilen runterwärts einfügen lassen wie geht das? hat jemand ein beispiel-script oder kann mir jemand sagen wo ich noch suchen kann?

grüsse
luna
 
Das macht man mit COM-Interop.

Als erstes musst du einen Verweis auf die COM-Bibliothek "Microsoft Excel 10.0 Object", oder so ähnlich, hinzufügen. Die Entwicklungsumgebung erzeugt automatisch eine "Wrapper"-Bibliothek, die den Zugriff auf die COM-Komponente ermöglicht.

Der Code sieht dann etwa so aus:
Code:
'Excel starten, anzeigen und leere Mappe erstellen
Dim excelApp as new Excel.Application()
Dim excelBook as Excel.Workbook = excelApp.Workbooks.Add
Dim excelWorksheet as Excel.Worksheet = CType(excelBook.Worksheets(0), Excel.Worksheet)
excelApp.Visible = True

'Spaltenköpfe einrichten
Dim rng as Excel.Range = excelApp.Range("A1")
With rng
	.ColumnWidth = 21.71
	.Value = "Was?"
	.Font.Bold = True
End With

rng = excelApp.Range("B1")
With rng
	.ColumnWidth = 9
	.HorizontalAlignment = Excel.Constants.xlRight
	.Font.Bold = True
	.Value = "Wo?"
End With

rng = excelApp.Range("C1")
With rng
	.ColumnWidth = 9
	.HorizontalAlignment = Excel.Constants.xlRight
	.Font.Bold = True
	.Value = "Wann?"
End With

'Eintragen der Werte
'Stellvertretend für deine Einträge:
Dim List as new ArrayList(25) 

'Wir wollen bei Zeile 2 beginnen:
Dim i as Integer = 2 '

With excelWorksheet
	Dim obj as Object
	For Each obj in List
		.Range("A" & i.toString).Value = CType(obj, String)
		'usw....
		i += 1
	Next obj
EndWith
Ich hoffe, das ich nirgendwo einen Fehler gemacht habe. Habs nicht getestet. Hilft dir das?
 
hallo sunray,

ja, du hast mir weiter geholfen. zwar nicht so wie gewollt, aber auf eine andere art! *g* ich hab mich vielleicht auch zu undeutlich ausgedrückt. ich wollte komplette zeilen neu in eine excel-tabelle einfügen. mit excel.constants hätte das funktioniert, deshalb hats mir geholfen. inzwischen hatte ich es aber schon anders gelöst:

Dim zaehler As Integer
Dim cEntryHeight As Integer
cEntryHeight = 4

For zaehler = 1 To cEntryHeight
Excel.Range("A" & xRow).Select()
Excel.Selection.EntireRow.Insert()
Next

so funktionierts auch! :eek:) excel.constants hilf mir aber auch insofern weiter, als das ich damit die zellen formatieren kann.

also: nochmal danke und viele grüße
luna
 

Neue Beiträge

Zurück