Excel datei in Visual basic öffnen und inhalt anzeigen

DerRiese

Grünschnabel
moinsen

ich hab mir folgendes zusammengeschustert

Private Sub Demo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox("Willkommen, auf OK klicken für Weiter", , "")
Dim x As String
Dim i As Integer
x = ""
Dim objExcelApp As Excel.Application
Dim objWorkbooks As Excel.Workbooks
Dim objSheet As Excel.Worksheet
Dim nQuartal As Integer

objExcelApp = CreateObject("Excel.Application")
objWorkbooks = objExcelApp.Workbooks
objWorkbooks.Open("C:\testfile.xls")
objSheet = objWorkbooks.Item(1).Worksheets(1)

i = 1
While x <> ""
x = objSheet.Range("A" & CStr(i)).Value
MsgBox("wert von x:" & x, MsgBoxStyle.MsgBoxHelp)
objSheet.SaveAs("C:\Testausgabe.xls")
objExcelApp.Visible = True
ListBox1.BeginUpdate()
ListBox1.Items.Add(x)
ListBox1.EndUpdate()
i = i + 1

End While
objWorkbooks.Close()



End Sub

das programm soll mir also ein excel file öffnen und den inhalt aus der ersten spalte in einer listbox anzeigen (die erste spalte enthält dezimalzahlen). nur in der version klappt das nicht so ganz.... er öffnet zwar im hintergund excel aber zeigt mir die zellinhalte nicht an. kann mir da jemand helfen?

des weiteren brauch ich noch irgendwie ne idee wie ich dann die ausgewählte zeile in der List box in ein paar txt-boxen anzeigen lassen kann...


danke
 
Hallo Riese,

das ist eigentlich recht einfach. Zum einen reicht es völlig, wenn Du ein Objekt als Excel-Applikation (z.B. xlapp) definierst. Du kanns dann über xlapp.workbook.open usw. Dir die Datei auf den Bildschirm holen. Du musst aber vorher unter "Projekt/Verweise" eine Microsoft Excel.DLL einbinden.

Also
dim xlapp as excel.application
set xlapp = new excel.application
xlapp.application.visible = true ' wichtig
[xlapp.application.ignoreRemoteRequests = true ' wenn Du vermeiden willst, dass Du aus versehen beim Doppelklick auf eine andere Datei in dieses Objekt springst. Achtung , nach der Verarbeitung muss du dass wieder auf false setzen, weil du sonst jede Excel-datei explizit über den Datei/öffnen dialog öffnen musst. ]

xlapp.workbooks.open (Pfad glaube ich, einfach ein bischen damit rumexperimentieren. In der Regel kannst Du Dir einfach ein Excelmacro aufzeichnen und den Code 1 zu1 nach VB übernehmen. Vor jeden Aufruf [z.B. Range("A1") muss xlapp.Range("A1") heißen] schreibst Du dann noch "xlapp", damit die Anwendung nicht durcheinander kommt.

Dann kannst Du mit so einer Funktion

*********************** ANFANG *********************************
dim anzahlZeilen as long
anzahlZeilen = Zeilenzahl(xlapp)

Private Function ZeilenZahl(ByRef xlApplik As Excel.Application) As Long

Dim z1, z2 As Long
Dim i As Integer

On Error GoTo ERR1
z1 = 0
z2 = 0
For i = 65 To 76 '65 bis 76 sind die ASCII-Codes für die Buchstaben A-K
z2 = xlApplik.Range(Chr(i) & Rows.Count).End(xlUp).Row
If z2 > z1 Then
z1 = z2
End If
Next i
ZeilenZahl = z1
Exit Function
ERR1:
ZeilenZahl = -1
End Function

********************************************************************************
Zur Info: Dieser Code "xlApplik.Range(Chr(i) & Rows.Count).End(xlUp).Row" sucht nach dem letzten Eintrag in Deiner Exceltabelle. Wenn Du nur in Spalte A suchst, dann kannst Du auch "xlApplik.Range("A" & Rows.Count).End(xlUp).Row" nutzen. CHR(i) wandelt den ASCII-Code in einen Wert um, hier A bis K

****************************** ENDE *****************************************


die Anzahl der Zeilen in Deiner Exceltabelle ermitteln und über eine einfache Schleife "for i = 1 to anzahlZeilen" den xlapp.Range("A" & cstr(i)).value auslesen.

Der Rest sollte easy sein.
Ich hoffe das war die richtige Antwort. Viel Spaß
 
Zurück