![]() |
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.. |
Re: Excel Daten in VBA Access importieren
Zitat:
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? |
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. |
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.. |
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. |
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.. |
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.. |
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 |
thx, ich werd mir das mal anschaun.. hab leider gerade wenig zeit..
aber sieht ganz hilfreich aus! |
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! |
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag