WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Excel Daten in VBA Access importieren (http://www.wcm.at/forum/showthread.php?t=78507)

maxmustermann 27.11.2002 11:39

Excel Daten in VBA Access importieren
 
ich habe folgendes problem:

ich habe noch nie etwas aus excel in acces importiert!
jetzt habe ich die aufgabe daten aus einer excel-datei, jedoch nur bestimmte "datenbereiche", in access zu importieren mittels VBA

ich habe zwar in der hilfe gelesen das es gehen soll, jedoch stand dort nicht wie :(

also wenn ihr codebsp dazu habt oder eine seite kennt wo das erklärt ist wie man auf die bestimmten bereiche zugreift und diese anschliessend importiert dann wär ich sehr dankbar dafür..

Seidl 27.11.2002 14:26

Re: Excel Daten in VBA Access importieren
 
Zitat:

Original geschrieben von maxmustermann
..., jedoch nur bestimmte "datenbereiche", in access zu importieren mittels VBA...
Was meinst du mit 'bestimmte Datenbereiche'? Nur bestimmte Spalten oder nur Datensätze die einem bestimmten Kriterium entsprechen?

Auf jeden Fall sollte die Sache recht einfach über ADO zu erledigen sein. Wenn mich nicht alles täuscht hat aber Excel so seine Tücken in seiner Verwendbarkeit als Datenquelle. Wenn Zeilen gelöscht oder eingefügt werden so bringt das die Reihenfolge der Datensätze durcheinander. Unter anderem verschiebt sich (zumindest glaube ich mich daran zu erinnern) das EOF nicht wieder nach vor wenn Zeilen gelöscht werden.

Welche Version von Access benutzt du?

Seidl 27.11.2002 20:26

Das mit dem Excel hat mir irgendwie keine Ruhe gelassen ;)

Hier findest du alles was du brauchst um über ADO mit SQL auf Excel zugreifen zu können.

maxmustermann 27.11.2002 20:59

also mit bestimmten datenbereichen meine ich folgendes:

ich muss zuerst ein feld finden, in dem ein bestimmter wert steht, und dann zb wenn das gesuchte feld A2 ist, die daten von B2 bis B10 einlesen und in eine tabelle in access schreiben..
gelöscht bzw eingefügt oder verändert wird in der excel datei nichts!
also solche probleme wie du sie beschrieben hast sollten nicht auftreten..

ich selbst muss diese importfunktion auf access und excel 2002 entwickeln..

aber möglicherweise wird beim benutzer access bzw excel 2000 verwendet!
aber ältere versionen bestimmt nicht..


für den link bedank ich mich mal, ich werde mir die seite mal genauer anschaun!

http://www.vbarchiv.net/workshop/workshop09.php

diese seite wurde mir von jemanden anderen gesagt.. vielleicht auch für dich interessant.. wer weis..

Seidl 27.11.2002 21:58

Na wenns weiter nichts ist ;)
Ich habe dir schnell ein kleines Beispiel entwickelt in dem ich in Access ein Abfrage auf Daten in Excel ausführe. Die Änderungen auf deine Anforderung solltest du mit den Infos aus meinem Link problemlos bewerkstelligen können.
Leider habe ich nur Office-XP installiert aber zwischen XP und 2000 gibt es ohnehin nur unwesentliche Änderungen, sprich ein Konvertieren dürfte auch kein Problem sein.
Da du aber erst mit dem Project beginnst würde ich dir empfehlen unter Access2000 (sofern vorhanden) zu arbeiten. Das 2000-er Format lässt sich unter XP problemlos öffnen.
Übrigens hoffe ich, das du die Developer-Version von Office hast. Ansonsten kannst du die erstellte Datenbank nämlich nicht mit Runtime-Komponente weitergeben. Einen Viewer wie für Access97 gibt's meines Wissens nämlich nicht mehr.

maxmustermann 27.11.2002 23:52

danke für den beispielcode!

ich denke schon das ich das jetzt hinbekomme!

big thx!

und wegen den versionen.. da hast recht das bei access 2000 und xp kaum ein unterschied ist..

der größte unterschied ist wohl die unterstützung von xml...

und das mit den dateiformaten sollte ja auch keine probleme mit sich bringen... da sie ja wie du schon gesagt hast "einwandfrei" kompatibel sind

also das 2000er beim xp..

maxmustermann 04.12.2002 12:42

hmm...

also jetzt steh ich wiedermal an..

wenn ich jetzt zb in der excel datei, das feld suche, in dem ein bestimmter wert steht, zb im beispiel von seidl nehmen wir halt "alter" an, dann würd ich jetzt gerne wissen, wie ich das feld am besten suche, und dann, wie man herausfindet, auf welchem feld man sich befindet.. dh, welches feld den inhalt "alter" hat

weil ich brauch den feldnamen dann für meine weitere bearbeitung!
im beispiel code vom seidl, würde ich als ausgabe C1 brauchen..
da der wert "alter" im feld "C1" eingetragen ist!

meine weitere importfunktion baut nämlich auf diesem feld auf.. dh der bereich wird anhand dieses feldes festgelegt..

Seidl 04.12.2002 20:17

Meinst du sowas in der Art?


Public Function SucheNachString()
MsgBox FindFirst("Alter"), vbOKOnly + vbInformation, "Suchergebnis"
End Function

Public Function SucheNachZahl()
MsgBox FindFirst(19), vbOKOnly + vbInformation, "Suchergebnis"
End Function


Public Function FindFirst(FindWhat As Variant) As String
Dim rngAll As Excel.Range
Dim rngFound As Excel.Range
Dim strRow As String
Dim strCol As String
Dim lngCol As Long
Dim CharCode As Long
Set rngAll = Application.ActiveSheet.Cells
Set rngFound = rngAll.Find(FindWhat)
If Not rngFound Is Nothing Then
strRow = CStr(rngFound.Row)
lngCol = rngFound.Column
Do While lngCol > 0
CharCode = lngCol Mod 26
If CharCode = 0 Then
CharCode = 26
End If
strCol = Chr(64 + CharCode) & strCol
lngCol = (lngCol - CharCode) / 26
Loop
FindFirst = "Row:" & vbTab & strRow & vbNewLine & "Column:" & vbTab & strCol
Else
FindFirst = "Sowos gibt's do net!"
End If
End Function

maxmustermann 05.12.2002 21:16

thx, ich werd mir das mal anschaun.. hab leider gerade wenig zeit..

aber sieht ganz hilfreich aus!

maxmustermann 09.12.2002 09:24

ich bin endlich dazugekommen das ich mir das mal anschaue was du mir da gepostet hast..

also ich bin bischen verwirrt...

könntest mir mal nen kleinen tipp geben, welche bibliotheken du verwendest?

wäre nett :ja:

weil ich hab ja wie gesagt noch nie mit excel gearbeitet in dem bezug, und steh da jetzt bischen an bei deinem beispielcode..

zuerst hat er den datentyp "Excel.Range" nicht erkannt..
da hab ich die mircosoft excel 10.0 object library gefunden.. damit kennt er den typ..

dann is aber gleich das nächste gekommen... "Application.ActiveSheet.Cells"
sag mir mal bitte welche bibliotheken du alle verwendest bei dem beispielcode den du mir da gepostet hast!

thx!

maxmustermann 09.12.2002 10:31

also application.activesheet.cells is in der mircosoft excel 10.0 object library ...

jetzt weis ich aber nicht woran es liegt das er den befehl nicht erkennt..

vielleicht ist auch was anderes gemeint.. weil beim ausführen, bleibt er schon früher stehen...

nur markiert er halt diesen befehl bei der fehlermeldung..

bin bisschen ratlos..

Seidl 10.12.2002 08:02

Dieser Code ist direkt in ExcelXP geschrieben und ich habe keinerlei zusätzliche Bibliotheken verwendet. Soweit ich weiss müsste er aber auch ab Excel97 aufwärts funktionieren. Wenn du die Abfrage direkt aus Access starten willst muss das natürlich ein wenig anders aussehen. Ich werde aber heute nicht mehr dazu kommen ausführlicher zu antworten.
sorry

maxmustermann 10.12.2002 16:32

k, wenn du mal zeit hättest, dir das anzuschaun wie das ganze in access aussehen müsste, dann wäre das hilfreich..

ich werd es mir noch selbst vornehmen..
mal sehn was ich zusammenbringe..

wenn ich es selbst hinbekomme schreib ichs rein, dann musst dir keine mühe mehr machen..

Seidl 10.12.2002 22:05

Hast Glück! Da's für's Joggen heute doch eher frisch ist (jo, i bin's des Joa no net gwohnt ;) ) und ich ohnehin noch eine paar CD's rippen wollte die ich mir gestern gekauft habe musste ich sowieso etwas Zeit vor'm Computer verbringen.
Im Anhang findest du eine neue Version der Access-Datenbank. Ich habe den Autostart für das alte Formular entfernt und ein neues eingefügt (AutomateExcel). In dem kannst du ein Excel-File auswählen und einen String eingeben nach dem gesucht werden soll bevor du die eigentliche Suche startest. Diese befüllt dir dann ein Feld mit der Zelle die den ersten Treffer gebracht hat. Natürlich ließe sich da noch einiges machen bzgl. Auswahl des zu durchsuchenden Blatts, Suchbereich usw. aber ich will nicht unnötig nur vor'm Kastl sitzen. Kannst mir ja noch was zum rippen geben :D
Aber Scherz beiseite. Wenn du es nicht schaffst aus einer Office-Application eine andere anzusprechen, dann solltest du dir ernstliche Gedanken über eine Woche tiefen Streberns machen bevor du mit VBA Probleme lösen kannst.

Seidl 10.12.2002 22:09

Uuups! File vergessen. Woran das nur liegen kann? (:bier: )

maxmustermann 10.12.2002 22:53

echt nice von dir! thx

naja... wenn man mit sowas noch nie zu tun gehabt hat, also mit zugreifen auf andere office applicationen, dann tut man sich halt bischen schwer..


bei meinen "vba-projekten" hab ich mich bis jetzt eben rein auf access beschränkt..


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag