MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.02.2019, 14:34   #1
VBA-Anfänger2019
Neuer Benutzer
Neuer Benutzer
Standard VBA - Export von Daten nach Access und Import von Access

Hallo Zusammen,

ich habe mir in Access eine Datenbank erstellt. Über diverse Abfragen werden die Daten aus einer Excel-Datei aufbereitet.

Nun fehlt mir für die perfekte Auswertung, dass in Excel per Button/VBA folgende Aktionen ausgeführt werden:

- Aus der Excel-Datei sollen die 3 Tabellenblätter in die bestehende Tabellen in Access exportiert werden. Vorher sollen die Inhalte der Tabellen in Access entfernt werden
- Ausführen der Abfragen in Access zur Aufbereitung der Daten
- Import der Access-Daten in die Excel Datei.

Sind die obengenannten Punkte überhaupt möglich? Mittels google bin ich leider nicht vorangekommen und mein VBA-Kenntnisse sind naja.


Ich hoffe, ihr könnt mir helfen.
VBA-Anfänger2019 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.02.2019, 15:12   #2
ebs17
MOF Guru
MOF Guru
Standard

Klar ist das möglich. Da Du schon VBA ansprichst: Damit kann man einen DAO- bzw. ADODB-Zugriff auf die Access-Datenbank gewinnen und damit dann Abfragen zum Löschen, Anfügen, Auswerten zum Ausführen bringen und letztlich das Datenkopieren nach Excel steuern.

Je nach Umfang von Daten und Verarbeitungen könntest Du ggf. auf den Umweg Datenbank verzichten und diese Maßnahmen auch direkt in der Excelmappe vornehmen. Auch da ist SQL möglich.

Nicht zuletzt gibt es seit Excel 2010 einen neuen Star in der Verarbeitung: Power Query. Da brauchst Du kein VBA, müsstest Dich aber bei höheren Ansprüchen evtl. mit der eigenen Sprache M beschäftigen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.02.2019, 15:38   #3
VBA-Anfänger2019
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Danke für deine Antwort.

Zitat:

DAO- bzw. ADODB-Zugriff auf die Access-Datenbank gewinnen und damit dann Abfragen zum Löschen, Anfügen, Auswerten zum Ausführen bringen und letztlich das Datenkopieren nach Excel steuern.

Gibt es hierführ ein Beispiel, welches ich Stück für Stück durcharbeiten kann, um den Zugriff zu verstehen und ggf. an mein Bespiel anpassen kann?

Viele Grüße!

Geändert von VBA-Anfänger2019 (11.02.2019 um 15:48 Uhr).
VBA-Anfänger2019 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.02.2019, 15:56   #4
ebs17
MOF Guru
MOF Guru
Standard

http://t1p.de/ws1d

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.02.2019, 21:45   #5
VBA-Anfänger2019
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ich habe mich mit dem Zugriff auf die Datenbank beschäftigt. Danke für die Links.

- Tabelle in Access leeren funktioniert
- Übergabe der Information aus Access nach Excel funktioniert ebenfalls.

Aktuell habe ich Probleme mit der Übergabe aller Daten aus den jeweiligen Exceltabllenblätter an die Datenbank. Vermutlich komme ich mit folgendem Code weiter:

PHP-Code:

Sub Aktualisieren()
   
Dim db As DAO.Database
   Dim strVerz 
As String
   Dim strSQL 
As String
   strVerz 
"C:irgendwo"

   
Set db OpenDatabase(strVerz "Daten.mdb")

    
Aktualisierungsabfrage auf ein Tabellenfeld
   strSQL 
"UPDATE A1_DAT INNER JOIN [excel 8.0;;imex=2;" _
      
"DATABASE=" strVerz "Daten_akt.xls].[a1_DAT_akt$] AS E" _
      
" ON A1_DAT.IDNR = E.IDNR" _
      
" SET A1_DAT.Telefon = E.Telefon_n" _
      
" WHERE E.Telefon_n Is Not Null"
   
db.Execute strSQLdbFailOnError

End Sub 
Wie passe ich die Aktualisierungsabfrage meinen Wünschen entsprechend an?
VBA-Anfänger2019 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2019, 09:25   #6
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

meinen Wünschen entsprechend

Gedanken lesen gehört nicht zu meinen überragenden Fähigkeiten.

Wünsche => formulieren => Ablaufplan => Umsetzung in Code

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 12.02.2019, 15:32   #7
VBA-Anfänger2019
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

Ich habe 2 Tabellen mit fester Spaltenanzahl, welche regelmäßig erweitert werden (neue Zellen). In Access sind die Tabellen identisch angelegt. Über einen Schaltfläche sollen alle Daten aus der Exceldatei in Access exportiert werden.

Sind diese Informationen für die Unterstützung ausreichend?
VBA-Anfänger2019 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2019, 22:44   #8
VBA-Anfänger2019
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Guten Abend,

ich habe mich noch einmal intensiv mit dem Thema Export der Excel Daten nach Access beschäftigt.

Im Beitrag ist ein Bespiel, welches zu meinem Problem passt.
https://www.ms-office-forum.net/foru...d.php?t=247042

Ich bekomme in der Codezeile den Laufzeitfehler "3134". Wie kann ich den Laufzeitfehler beheben? Was kann die Ursache sein?
Code:

 db.Execute "INSERT INTO [" & strTabellen(i + 1) & "] (" & strListe & ")" & _
         " SELECT " & strListe & _
         " FROM [excel 8.0;;imex=2;DATABASE=" & strXLSm & "].[" & strTabellen(i) & "$]"

Viele Grüße!
VBA-Anfänger2019 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.02.2019, 23:42   #9
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Wie kann ich den Laufzeitfehler beheben?

Als erstes sollte man sich den Inhalt der Fehlermeldung vergegenwärtigen, vor allem, wenn einem eine Nummer aus dem Pool von etwa 60.000 Fehlermeldungen nichts unmittelbar sagt. Wer dann weitgehend fehlerfrei programmiert bzw. dieses anstrebt, ist dann entwöhnterweise auch nicht mehr ganz im Bilde.

=> Syntaxfehler in der INSERT INTO-Anweisung

Dazu müsste man sich anschauen, was Du im konkreten Moment zusammengebaut hast - VBA-Zusammenbau von SQL-Anweisungen ist eine sehr häufige "genutzte" Quelle von Fehlern.
Zwischenschaltung einer Variablen für das Zusammensetzen, Prüfen und dann auch Ausführen:
Code:

Dim sSQL As String
sSQL = "INSERT INTO [" & strTabellen(i + 1) & "] (" & strListe & ")" & _
         " SELECT " & strListe & _
         " FROM [excel 8.0;;imex=2;DATABASE=" & strXLSm & "].[" & strTabellen(i) & "$]"
Debug.Print sSQL         ' Ausgabe ins Direktfenster (Strg+G)
'db.Execute sSQL, dbfailOnError
Also schaut man sich an, was man mit den aktuellen Variablen erzeugt hat. daraus kann man seine Schlüsse ziehen, insbesondere wenn einem die erforderte korrekte Syntax bekannt ist.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.02.2019, 08:58   #10
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

Hallo VBA-Anfänger2019,

wenn Du Dich endlich entschließen könntest, ein eigenes Demo-Projekt hier bereitzustellen:
- wenige Datensätze
- aber Dummy-Daten mit stimmigen Datentypen
- und einen untergliederten Wunschkatalog

dann wäre Dir schon längst geholfen worden. Das immer wiederkehrende Beschreiben des Problems genügt für den Praxistest nicht und Dein Wunsch
Code:

Gibt es hierführ ein Beispiel, welches ich Stück für Stück durcharbeiten kann, um den Zugriff zu verstehen und ggf. an mein Bespiel anpassen kann?
wird wohl eine Wunschvorstellung bleiben. Zeige also bitte, was Du da schon hast, denn schon das Setzen von Vba-Verweisen auf das falsche Objekt (DAO.36 bzw. DAO.120) kann zu Problemen führen.
Ich benutze an der Stelle viel lieber 'late binding' statt 'early binding'.

Gruß von Luschi
aus klein-Paris
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:19 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.