VB 5/6-Tipp 0050: Tabellen aus Exceldatenbanken lesen und schreiben
von ActiveVB
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: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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 ?