collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 45
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14038
  • stats Beiträge insgesamt: 67230
  • stats Themen insgesamt: 9069
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren  (Gelesen 1382 mal)

Offline Carlos_C

  • Access-Profi
  • **
  • Beiträge: 295
Hallo liebes Forum,

weißt jemand, wie man am besten mit VBA den Inhalt einer Access Abfrage in ein bestimmtes Excel Blatt (einer existierenden Excel Datei) kopieren kann?

Ich habe in meiner Access Anwendung eine Abfrage (qry_meineabfrage), bei der ich oben links markiere, strg.+C tippe, dann gehe ich zur Excell Tabelle (z.B. c:\Exceldatei.xlsx), das Blatt „Daten“ wähle, auf die Zelle B5 klicke, und dann Strg.+V antippe. Diese Arbeit würde ich gerne per Knopfdruck aus einem Formular machen können.

Ich freue mich auf jeden Vorschlag

LG

Carlos
Gruß,

Carlos
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 376
Im Excel kann man Daten importieren, was der bessere Weg ist als vom Access aus Excel zu steuern.
 

Offline Carlos_C

  • Access-Profi
  • **
  • Beiträge: 295
Danke Wurliwurm für Deine Antwort! Es muss aber von Access auf Knopfdruck ins Excel Blatt exportiert werden. Es geht um eine Access Anwendung, die in der Firma benutzt wird. Hätte jemand da eine Lösung? Danke.
Gruß,

Carlos
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Servus
 

Offline Wurliwurm

  • Access-Profi
  • **
  • Beiträge: 376
Hi,

vielleicht hilft:
http://msdn.microsoft.com/en-us/library/aa223845(v=office.11).aspx

Harald

Das ist aber Programmierung im Excel.

Wenn das Excel über Access gesteuert werden soll, da kann man unzählige Fricklereien mit Google finden.
 

Offline bahasu

  • Moderator
  • Access Guru
  • *****
  • Beiträge: 1891
Hi,

ich hatte in meiner Anwendung in Access eine Excel.Application "creiert" und dann mit den angesprochenen Routinen aus Access die Excel-Datei gefüllt.
Das hatte für mich den Vorteil, dass ich die Excel-Spalten "schön" formatieren konnte - wie man es halt aus Excel gewohnt ist {der Wiedererkennungswert ist dann höher}.

Es wird aber auch noch andere Wege geben, die nach Rom führen...

Harald
Servus
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1295
Der Weg über eine Datenverknüpfung in Excel, die ohne Programmierung auskommt, verdient vielleicht auch Beachtung.
Grüße von der (⌒▽⌒)
 

Offline Carlos_C

  • Access-Profi
  • **
  • Beiträge: 295
Hallo Forum,

ich habe es folgendermaßen probiert:

Private Sub btn_exportexcel_Click()

Dim xlAnw As Excel.Application
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.WorkSheet
Dim a As Long

Dim db As DAO.Database
Dim rs As DAO.Recordset


Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlAnw.Workbooks.Open(C:\Datei.xlsx)
 Set xlArbBlatt = xlBuch.Worksheets("Datenblatt")

Set db = CurrentDb
Set rs = db.OpenRecordset("qry_report", dbOpenDynaset)
rs.MoveFirst
a = 7

Do While Not rs.EOF
a = a + 1
xlArbBlatt.Range("B" & a).Value = rs!ID
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
Set db = Nothing

xlBuch.Save
xlAnw.Quit

Set xlBuch = Nothing
Set xlArbBlatt = Nothing
Set xlAnw = Nothing

End Sub

Die Prozedur soll die Daten des Feldes „ID“ meiner Abfrage „qry_report“ auf das Excel Blatt „Datenblatt“ kopieren, und zwar ab der Zelle „B8“. Wenn ich die Prozedur laufen lasse, kommt folgende Fehlermeldung:

11 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

Und markiert mir folgende Zeile gelb

Set rs = db.OpenRecordset("qry_report", dbOpenDynaset)

Es ist – vermute ich mal – wichtig, zu erwähnen, dass die Parameter, auf die die Abfrage „qry_report“ basiert, aus Textfeldern eines Formulars kommen, das in dem Moment des Knopfdrucks offen ist.

Ich habe die Vermutung, dass das die Ursache sein kann, weil ich testweise die Abfrage „qry_report“ durch die Tabelle „tbl_XXX“ ersetzt habe, und zwar in der Zeile, dass der Debugger gelb markiert hatte, und dann läuft die Prozedur wunderbar. Sie schreibt die Daten des Feldes „ID“ der Tabelle „tbl_XXX“ auf das Excel Blatt „Datenblatt“ ab der Zelle B8.

Hat jemand einen Vorschlag, wie ich dieses Problem lösen kann? Das muss alles auf Knopfdruck passieren, da diese Anwendung von Kollegen in der Firma benutzt wird, die keine Ahnung von Access haben.

LG

Carlos


Gruß,

Carlos
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1295
Siehe FAQ 6.4, und schau Dir bitte zusätzlich die Methode CopyFromRecordset des Excel-Range Objekts an.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: Carlos_C

Offline Jonny

  • Access-Meister
  • ***
  • Beiträge: 639
Hallo ich  musste in eine bestehende Excel-Tabelle Daten einfüllen. Dazu habe ich folgende Lösung
     ' bestehende Excel-Datei auswählen
    PfadDatei = CurrentProject.Path & "\Auswertung.xlsx"
    Ausw.movefirst
    ' Ausgabe beginnt in Zeile 5
    Zeile = 5
    ' ab hier Excel
    ' Excel Application setzen
    Set objExcel = New Excel.Application
    ' öffnen:
   
    objExcel.Workbooks.Open PfadDatei
    ' mappe aktivieren
    objExcel.ActiveWorkbook.Activate
    ' Aktionen sichtbar machen, wenn auf false dann läuft Excel im Hintergrund
    objExcel.Visible = True
   
    Set wsheet = objExcel.Worksheets("Tabelle1")
    ' ein Datum in Feld G3 füllen
    wsheet.range("G3") = Month(Me!DatumBis)
    while not ausw.eof
         wsheet.range("A" & Zeile) = ausw!Nachname
         Zeile = zeile + 1
         ausw.movenext
    wend
Gruß Johann
 
Folgende Mitglieder bedankten sich: Carlos_C

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren
« Antwort #10 am: März 08, 2018, 12:02:03 »
Hallo Carlos,
die Fehlermeldung hat nun erst mal nix mit deinem Wunsch zu tun das Ergebnis einer Abfrage nach Excel zu bewegen.
Ob eine Abfrage wie gewünscht ausgeführt wird lässt sich in Access eigentlich sehr einfach ausprobieren. Du kannst Sie mit Doppelklick in Navigationsfenster öffnen.

Kommen wir nun auf das Problem der Übertragung  der Daten nach Excel.

Die von dir angewandte Methode, also in jedes Excel Tabellenfeld direkt zu schreiben, funktioniert normaler Weise. Aber bei größeren Datenmengen ist sie doch sehr lahm und es empfiehlt sich mit Datenfeldern zu arbeiten.

Hier ein Ansatz (nur Anstoss, nix fertig):

Dim vTab ()

iStart = 4 'Erste Zeile festlegen
lastEX= "K" 'Letztes Feld festlegen
rCount= rst.Recordcount  'Anzahl Zeilen

vTab = xclApp.Range("A" & iStart & ":" & lastEX & (rCount + iStart)).Value

Do while not rst.eof
... hier vTab mit Werten füllen, oder auslesen
loop

... und zurückschreiben
xclApp.Range("A" & iStart & ":" & lastEX & (rCount + iStart)).Value = vTab



Frithjof
 
Folgende Mitglieder bedankten sich: Carlos_C

Offline Carlos_C

  • Access-Profi
  • **
  • Beiträge: 295
Re: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren
« Antwort #11 am: März 08, 2018, 12:34:00 »
Vielen Dank Lachtaube, Jonny und Frithjiof für Eure Meldungen!

@ Lachtaube:

Die CopyFromRecordset Methode wäre für Excel, ich muss von Access zu Excel kopieren.

Die FAQ 6.4 habe ich mir angeschaut: Es scheint einfach anzuwenden, wenn man ein Abfragekriterium in der Form Forms!Formularname!SteuerelementName hat. In meiner Abfrage haben die Kriterien entweder die Form

-   Wie "*" & [Forms]![frm_MeinFormular]![cbo_MeineKombinationsbox] & "*" , oder
-   >=Nz([Forms]![frm_MeinFormular]![txt_DatumVon];#1-1-1900#) Und <=Nz([Forms]![frm_ MeinFormular]![txt_DatumBis];#1-1-2200#)


Wenn ich meine Abfragekriterein in der Form Eval ("Abfragekriterium") eingebe, kommt folgende Fehlermeldung: Datentypenkonflikt in Kriterienausdruck. Wie kann ich am besten die Eval-Methode in meinem Fall anwenden?

@ Frithjiof:

Ist in Deinem Beispiel vTab ein Array??? Wenn ja, das wäre eine gute Idee. Die Abfrage kann mehrere tausende Datensätze haben, und vielleicht ist es einfacher mit einem Array von Access in Excel zu kopieren?

Gruß,

Carlos
Gruß,

Carlos
 

Offline Carlos_C

  • Access-Profi
  • **
  • Beiträge: 295
Re: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren
« Antwort #12 am: März 08, 2018, 12:52:28 »
Hallo Frithjiof,

zu Deinem Satz

Zitat
Ob eine Abfrage wie gewünscht ausgeführt wird lässt sich in Access eigentlich sehr einfach ausprobieren. Du kannst Sie mit Doppelklick in Navigationsfenster öffnen.

Die Abfrage funktioniert, wenn man sie mit Doppelklick im Navigationsfenster öffnet. Nur wenn ich per VBA Code versuche, sie zu öffnen mit Set rs = db.OpenRecordset("qry_report", dbOpenDynaset) dann geht das nicht, bzw. kommt die Fehlermeldung 11 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben.

Jetzt zu Deinem Vorschlag mit dem Datenfeld (ist doch ein Array lt. dem Wörterbuch =) ):

Du schreibst:

Zitat
Do while not rst.eof
... hier vTab mit Werten füllen, oder auslesen
loop

Wie füllst Du das Datenfeld? Beim Öffnen der Abfrage mit der db.OpenRecordset-Methode, was bei mir die Fehlermeldung gibt?

Gruß,

Carlos

Gruß,

Carlos
 

Offline Frithjiof

  • Access-User
  • *
  • Beiträge: 74
Re: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren
« Antwort #13 am: März 08, 2018, 13:05:17 »
Hallo Carlos

Zitat
Ist in Deinem Beispiel vTab ein Array??? Wenn ja, das wäre eine gute Idee.
Ja.

Wenn du nur eine Abfrage nach Excel bugsieren musst

Sub qryNachEcxel( meineAbfrage as string )
    DoCmd.OpenQuery meineAbfrage
    DoCmd.RunCommand acCmdOutputToExcel
    DoCmd.Close acQuery, meineAbfrage
End Sub

Um dir bei deiner Abfrage zu helfen wäre ein aussagekräftiges Beispiel nicht übel. Gerade bei komplexeren Abfragen ist es sinnvoll die Verweise auf Formularfelder per VBA durch die Werte zu ersetzen, also eine parameterfreie Abfrage zu erzeugen.

Frithjof
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1864
Re: Access Abfrage per Knopfdruck auf ein bestimmtes Excel Blatt kopieren
« Antwort #14 am: März 08, 2018, 13:22:06 »
Ich würde eher diesem folgen http://www.donkarl.com?FAQ6.16
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.