Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0050: Tabellen aus Exceldatenbanken lesen und schreiben

 von 

Beschreibung 

Wer schon immer wissen wollte, wie das mit dem Zugriff auf Excel funktioniert und wie man Werte ind die Exceldatenbank einschreibt und wieder herrausliest, kann diesen Tip als Einstieg bestimmt gut verwenden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [4,29 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente 'Microsoft Common Dialog Control 6.0 (SP3) (COMDLG32.OCX)' wird benötigt.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Standarddialog-Steuerelement "CommonDialog1"
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Schaltfläche "Command3"
' Steuerelement: Textfeld "Text9"
' Steuerelement: Textfeld "Text8"
' Steuerelement: Textfeld "Text7"
' Steuerelement: Textfeld "Text6"
' Steuerelement: Textfeld "Text5"
' Steuerelement: Textfeld "Text4"
' Steuerelement: Textfeld "Text3"
' Steuerelement: Textfeld "Text2"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label9"
' Steuerelement: Beschriftungsfeld "Label8"
' Steuerelement: Beschriftungsfeld "Label7"
' Steuerelement: Beschriftungsfeld "Label6"
' Steuerelement: Beschriftungsfeld "Label5"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Dim Excel As Object
Dim LFlag As Boolean

Private Sub Form_Load()
  Set Excel = CreateObject("Excel.Application")
  Excel.Visible = False
End Sub

Private Sub Command1_Click()
  CommonDialog1.Filter = ("Excel-Datei (*.xls)|*.xls;")
  CommonDialog1.InitDir = App.Path
  CommonDialog1.ShowOpen
  
  If CommonDialog1.filename <> "" Then
    Excel.Workbooks.Open CommonDialog1.filename
    LFlag = True
    Call Command2_Click
  End If
End Sub

Private Sub Command2_Click()
  If Not LFlag Then Exit Sub
  
  Text1.Text = Excel.Range("A1").Value
  Text2.Text = Excel.Range("B1").Value
  Text3.Text = Excel.Range("C1").Value
    
  Text4.Text = Excel.Range("A2").Value
  Text5.Text = Excel.Range("B2").Value
  Text6.Text = Excel.Range("C2").Value
    
  Text7.Text = Excel.Range("A3").Value
  Text8.Text = Excel.Range("B3").Value
  Text9.Text = Excel.Range("C3").Value
End Sub

Private Sub Command3_Click()
  If Not LFlag Then Exit Sub
  
  Excel.Range("A1").Value = Text1.Text
     
  Excel.Range("B1").Value = Text2.Text
  Excel.Range("C1").Value = Text3.Text
    
  Excel.Range("A2").Value = Text4.Text
  Excel.Range("B2").Value = Text5.Text
  Excel.Range("C2").Value = Text6.Text
    
  Excel.Range("A3").Value = Text7.Text
  Excel.Range("B3").Value = Text8.Text
  Excel.Range("C3").Value = Text9.Text
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  If LFlag Then
    Call Command3_Click
    Excel.ActiveWorkbook.Close SAVECHANGES:=LFlag
  End If
  
  Excel.Quit
  Set Excel = Nothing
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 49 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von r.mueller@sz-online.de am 09.11.2008 um 08:45

Hallo

Tip an alle die das benutzen wollen

Verwendet "Excel" nie als Objectvariable

Eine wichtige Programmiererregel wird hier mißachtet deren Verletzung manchem schon Wochenlanges Fehlersuchen eingebracht hat:

Nichts aber auch garnichts was sich in Objektkatalog findet als Variablenname zu benutzen!
Fehler die dadurch entstehen können sind u.U. sehr schwer zu finden.

"Excel" findest du dort als Biblioteksname

Gruß
r.mueller@sz-online.de


Kommentar von Horst Sievers am 18.09.2008 um 19:12

Funktioniert bei mir nur eingeschränkt, laden und lesen geht, schließen kann ich die Anwendung nicht ordnungsgemäß. Nur mit Abbruch über den Taskmanager, dann bleibt natürlich die Excel Tabelle im Hintergund geöffnet, und es kommt eine Aufforderung zum Speichern unter...

Kommentar von Jan Iemhoff am 01.03.2008 um 18:11

Wie bekomme ich :
'Microsoft Common Dialog Control 6.0 (SP6) (COMDLG32.OCX)'
mfg

Kommentar von Friederes Fränz am 02.06.2007 um 11:20

Ich habe Windows Vista und ich versuche einen Programm zu schreiben, wo man eben Exel-Tabellen einlesen und in Variablen abspeichern kann. Doch ihr vorgeschlagenes Programm funktioniert nicht bei mir wegen folgender Ausnahme:

Altes Format oder ungültige Typbibliothek. (Ausnahme von HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

Können Sie mir helfen?

Kommentar von Brummi am 17.11.2006 um 15:46

Es sollen mehrere Programm aus einer Excel-Datei lesen und in eine Excel-Datei schreiben können. Wie muss man das starten von Excel und der datei anlegen, damit das Excel nur ein Mal geöffnet wird?

Kommentar von Sebi am 01.08.2006 um 23:49

Hallo!
Also, ich hab n Programm gschrieben, was diesen Tipp beinhaltet.

Ich selbst benutze Office 2003, bei mir funktioniert alles einwandfrei.
Bei anderen Leuten, die das Programm nutzen wollen, treten immer wieder Probleme auf und zwar in der Zeile:

Set Excel = CreateObject("Excel.Application")

Aber auch bei Leuten, die Office 2003 benutzen, wo es bei mir funktioniert, gibt es genau das gleiche Problem.
Also woran liegt es, ob es funktioniert, oder nicht?
Kann man da nachträglich irgendwelche Datein oder ActiveX-Sachen installiern, die das Problem beheben?
Wäre nett, wenn mir wer helfen kann.
Schönen Tag/Abend,
Sebastian

Kommentar von peter dM am 06.07.2006 um 17:47

Guten TAg,

dieser Tipp 0050 ist genau das was ich gerade für mein kleines Projekt gesucht habe. Echt klasse, dass ich so schnell bei euch fündig wurde. Dankeschön. Es bleibt mir aber noch ein kleines Restproblem. Wenn ich meine Daten zurückschreiben will, wird ein Fehler ausgeworfen, weil die Exceldatei schreibgeschützt ist (Blattschutz). Wie kann ich denn per VB den Blattschutz aufheben/setzen. Wär toll, wenn ihr mir das noch verraten würdet.
Grüße
Peter

Kommentar von arif arslan am 08.06.2006 um 15:02

ich bin neu in diesem "Milleu", bin im besitz von VB6 Ent. und würde gerne mit hilfe einer Exel-datenbank meine persönlichen daten verwalten. Ich weiss nicht ob und wie das funktioniert, ich habe aber in exel mit VBA viele sachen umgesetzt die auch funktionieren .

Danke im voraus für alle antworten, bin gespannt

arif

Kommentar von Sebi S. am 02.05.2006 um 22:46

"Laufzeitfehler '429': Objekterstellung durch ActiveX-Komponente nicht möglich" auf manchen, nicht allen PCs. Woran liegt es, dass es nicht bei allen ist, und wie kann ich es bei denen, wo es nict funktioniert beheben?
Hilfe wäre sehr nett.
sos@gacksi.de

Kommentar von Shonsu am 27.04.2006 um 15:15

eine neue(komplett leere) Arbeitsmappe erstellt man folgendermassen:

Dim Excel As Object

Public Function Export2Excell()

Set Excel = CreateObject("Excel.Application")
Excel.workbooks.Add

End Function

Kommentar von Schwannes am 01.08.2005 um 21:58

Also der Code ist echt genial. Bin ich noch gar nicht drauf gekommen.

Hab ne Lösung für das Problem beim Beenden des Programms gefunden. Normalerweise wird der Prozess Excel weiter ausgeführt, wenn man jedoch beim Beenden des Programms das Workbook von VB aus ordentlich schliesst ist der Prozess ebenfalls beendet (VB6 auf WinXP mit Office2003 und OfficeXP getestet). Mein Code dafür:

[Code]
Dim Excel As Object

Private Sub Form_Load()
Set Excel = CreateObject("Excel.Application")
End Sub

Private Sub Command1_Click()
Excel.workbooks.Open "F:\bla.xls"
Text1.Text = Excel.Range("B4").Value
End Sub

Private Sub Form_Unload(Cancel As Integer)
Excel.workbooks.Close
End Sub

Kommentar von stev am 21.07.2005 um 15:22

Hallo,
ich hab 2 Fragen:

1. Frage:
Wie kann ich den Tabellennamen festlegen??
Ich muss in einer Arbeitsmappe 2 Tabellen anlegen und diese benennen.

2. Frage:
Muss ich die Felder über Excel.Range("A1") ansprechen? Oder kann ich den Spalten- und Zeilenindex auch anders angeben?

Ich bin für jeden Tipp dankbar.

Kommentar von Susanne Baldewein am 11.05.2005 um 14:05

Hallo,
da ich gerade ein Problem mit VB und Excel hab, hab ich einmal euren Code ausprobiert. Es ist das gleiche Problem dabei heraus gekommen, dass ich schon hatte. Die Dateien sind nach Abschluß des Programms nach wie vor geöffnet (trotz Quit und set Nothing), und was noch unangenehmer ist, war Excel nicht geöffnet, dann sieht man es noch nicht einmal und hat dann Probleme, wenn man auf die Dateien zugreifen will.
Wie kann man dies abstellen ?
Achso, ich arbeite mit VB6 unter Windows XP.

Ich freue mich auf Tipps.

Gruß

Susanne

Kommentar von Volkmar Zahor am 11.05.2005 um 09:51

Ich habe das Problem bei einer HMI-Application. Ich möchte Daten in ein Excel-File schreiben. Das klappt auch soweit ganz gut, nur wenn ich dann das File abspeichern möchte, wird immer nachgefragt ob ich die vorhandene Datei überschreiben möchte, das kann ich aber da gar nicht gebrauchen. Kann mir da jemand weiterhelfen.

Vielen Dank im Voraus

Volkmar Zahor

Kommentar von Wolfram am 28.04.2005 um 18:43

hat mir auch geholfen:
problem bei migration von windows 2000 auf xp sp2 mit office xp.
fehler wurde damit behoben: durch CreateObject(...

Kommentar von Jens am 01.03.2005 um 08:57

Gibt es eine Lösung für das Beenden der aufgestarteten Prozesse ?

Kommentar von Roman am 02.10.2004 um 10:18

um eine datei mit passwort zu öffnen
einafach

Excel.Workbooks.Open CommonDialog1.filename

,Password:= 12345

eingeben
Excel.Workbooks.Open CommonDialog1.filename,Password:= 12345

wichtig OHNE ""!!!!!!!!!!!!!!
hoffe konnte helfen

Kommentar von Cygnus am 20.04.2004 um 09:54

Wenn ich beim Beenden meines Visual Basic Programms eine Excel Datei, wie in diesem Source, schließe, bleibt diese im Taskmanager unter Prozesse erhalten. Spätestens nach dem 20. Start meines Programms geht es daher entweder sehr langsam oder der Computer stürtzt ab.

Ich verwende diesen source für ein Schulprojekt daher bitte ich um baldige Hilfe. Danke!

Kommentar von thomas am 16.12.2003 um 23:50

hat jemand eine idee wie mann es bewerkstelligen kann einen serienbrief auszudrucken, mit auslesen der datensätze aus einer excel-tabelle, jedoch soll jeder brief einzeln geschickt werden???
vielen dank thomas

Kommentar von Thorsten Eckert am 28.09.2003 um 15:26

Bezieht sich auf:
Von JohnnyD am 17.03.2003 um 09:30
Wie kann ich ein geschütztes Excel Dokument starten? Bzw. wie kann ich das Passwort gleich mit übergeben?


Ich greife folgender massen auf eine Excel Datei zu und nun möchte ich ein Passwort mit übertragen, wo muss ich was eingben??? Vielen Dank für Ihre Hilfe???



Dim test As String

password = "test"


'Datenbank Verbindung herstellen zu Excel
Set excel_con = CreateObject("Excel.Application")
'Oeffne die Datei im gleichen Verzeichnis
excel_con.Workbooks.Open App.Path & "\test_tabelle.xls"
'Tabelle auswählen
Tabellenname = "testseite"

Vielen Dank für Ihr Hilfe

Gruß ET

Kommentar von Mathias am 08.05.2003 um 09:22

habe win nt4 und vb6 auf meinem rechner. jedoch wenn ich die excel.application einbinde, kommt bei mir immer die fehlermeldung "benutzerdefinierter typ nicht definiert"! habs auch schon unter xp versucht... kann mir jemand helfen?

Kommentar von Atalay Bulut am 09.04.2003 um 19:52

Einfach super!!!!!! HAT MIR ECHT WEITERGEHOLFEN. Toll!!!

Kommentar von Atalay Bulut am 09.04.2003 um 19:49

Einfach super!!!!!! HAT MIR ECHT WEITERGEHOLFEN. Toll!!!

Kommentar von JohnnyD am 17.03.2003 um 09:30

Wie kann ich ein geschütztes Excel Dokument starten? Bzw. wie kann ich das Passwort gleich mit übergeben?

Kommentar von Tülay am 27.02.2003 um 14:50

Wie kann ich das machen wenn ich eine Eingabemaske in vb habe die die Daten, die ich eingebe automatisch in eine Exceltabelle schreibt. Bedanke mich im Voraus

Kommentar von hans h. fessel am 29.11.2002 um 15:26

für
Set Exel = CreateOjekt(... folgt die Fehlermeldung: Laufzeitfehler 429
Kann mir jemand helfen? ist vielleicht eine Voreinstellung falsch. Bin Anfänger
in VB. Danke HHFessel

Kommentar von Jürgen am 09.11.2002 um 10:13

Hallo, sehe ich das richtig, obiger Tip "EXCEL Daten lesen und schreiben" funktioniert nur wenn man auch EXCEL installiert hat ? Sorry, wer kann dann sowas gebrauchen ???

Kommentar von Gaby am 25.07.2002 um 14:00

Wie kann man mit VB Inhalte einer Zelle mit dem Inhalt einer Combobox vergleichen und wenn die Inhalte übereinstimmen in der Spalte daneben in der Zellenhöhe der Übereinstimmung einen Wert eintragen?

Kommentar von R. Graf am 10.06.2002 um 14:35

Wie kann ich mit vb aus einer Datei in ein Excel-Blatt schreiben??

Kommentar von Bashan am 18.04.2002 um 21:28

Ich habe ein auch das Problem ,dass ich nicht weiß wie ich Datenreihen aus einem DBgrid in Excel übertragen kann !

Kommentar von Oliver am 14.03.2002 um 10:58

Wie kann ich Datensätze aus einer Exceltabelle durchsuchen u/o filtern. Wobei dies alles nur über die FormOberfläche realisiert sein soll. Also Excel.visible=false ist. Die Datensätze anzeigen, und durchlaufen klappt schon. Nur filtern und suchen nicht. Irgenwelche Ideen?

Kommentar von Marcus am 18.02.2002 um 20:58

Wie kann ich bestimmte Zeilen anzeigen lassen. Nicht nur vorbestimmte, wie im Beispiel A1. Ich möchte auf einer Maske die Zeile wählen und dann sollen mir die Daten angezeigt werden.

Kommentar von marka am 16.02.2002 um 16:04

Wie kann ich Exceldaten in Vb einlesen und anzeigen lassen?

Kommentar von bartharr am 18.01.2002 um 21:45

ich möchte daten aus einem Variablenarray in einer excel-datei speichern. bitte um hilfe, benötigt für eine schul-projektarbeit - danke

Kommentar von keitan am 05.01.2002 um 20:58

Wie kann ich aus einer zelle Text auslesen und in einer anderen Arbeitsmappe in eine bestimmte Zelle einfügen. Wäre für Vorschläge sehr dankbar.

Kommentar von Christian am 23.12.2001 um 21:17

Wie kann ich aus aus einer Excel Datei die Namen der darin vorhanden Tabellen in eine Listenbox ausgeben?

Kommentar von Rudi am 19.12.2001 um 10:05

Dazu auch tip390 beachten!

Kommentar von Thomas Steinle am 29.11.2001 um 18:46

Ich habe eine ODBC-Verbindung zu einem benannten Bereich einer Excel-Tabelle aufgebaut und diesen über ein DataEnvironment eingebunden. über eine Routine kopiere ich die Datensätze MIT ERSTAUNLICHER GESCHWINDIGKEIT aus dem Excel-Recordset in eine ORACLE-Tabelle. Leider gelingt es mir nicht über ein DataEnvironment schreibend auf eine Excel-Tabelle zuzugreifen. Hat Jemand eine Idee???
Gruß Thomas

Kommentar von Werner am 19.10.2001 um 13:29

Gibt es eine Möglichkeit ein Excel-File aus einem VB-Projekt, welches auf einem Server läuft auf dem MSOffice nicht installiert ist, zu erzeugen?

Kommentar von Nuki am 01.08.2001 um 14:15

Ist es möglich mehrere Zeilen/Spalten aus einer DBGrid zu markieren und den Inhalt in die Zwischenablage zu kopieren? Danke für jede Hilfe!
Nuki

Kommentar von Stefan Janssen am 30.05.2001 um 18:23

Wie erfahre ich, welche Methoden, Eigenschaften oder gar Ereignisse das Excel Objekt außer den hier beschriebenen noch enthält?

Kommentar von Sebastian am 24.04.2001 um 14:42

Wie kann ich Das Diagram in einer Excel.Application aus VB heraus ansprechen. Z.B um es zu aktualisieren.

Kommentar von Stefan am 07.04.2001 um 18:30

Eine neue Excel-Datei kann man so erstellen:
Excel.Workbooks.Add
Excel.ActiveWorkbook.SaveAs FileName:=Dateiname

Kommentar von Thomas Schmid am 21.03.2001 um 19:42

hi
Kann man seine Daten auch in einer anderen Datei speichern ohne das man dazu Excel oder andere Programme benötigt
Mit freundlichem Gruß
Thomas Schmi

Kommentar von Peter am 16.03.2001 um 11:44

Arbeitsmappe kann so ausgewählt werden.
Excel.Worksheets("Tabelle2").Activate ' "Tabelle1"

Kommentar von cbpanther1 am 21.02.2001 um 20:39

Wie kann ich die Daten aus einem bestimmten Tabellenblatt z.B. Tabelle2 auslesen ?
und wie kann ich zum beispiel wenn ich die zellen A1 A2 A3 A4 A5 und die zellen B1 B2 B3 B4 B5 in eine variable speichen will das so festlegen das es geht ich kann im moment nur immern einer zelle eine variable zuordnen ??
Ich will dann sagen können nimm mir aus exel die zellenbereiche die ich gesagt habe hier z.B A1 A2 A3 A4 A5
und schreibe sie mir in eine txt file ... und wie kann ich aus einer txt file die daten wieder auslesen und in eine bereits bestehende exel mappe einfügen ??? ohne evtl vorhandene dateien zulöschen ?? SO des reicht eerst mal,ich hoffe ihr könnt mir helfen :)

Kommentar von Marcus Gräfe am 21.02.2001 um 13:18

Wie kann ich denn eine neue Exceldatei erstellen lassen? Denn ich habe keine Exceldatei, die ich öffnen könnte, es muss eine neue erstellt werden und Werte aus meinem Programm dann dort eingefügt werden. Wie geht denn so etwas?

Kommentar von Josef am 11.02.2001 um 15:19

Gibt es eine Möglichkeit um Daten aus einem Excel- oder Acess-File zu lesen ohne daß Office (Excel bzw. Access) auf dem Rechner installiert ist?

Kommentar von hussam am 24.11.2000 um 14:04

Wie kann ich die Daten aus einem bestimmten Tabellenblatt z.B. Tabelle2 auslesen ?