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!


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr.

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