Freigeben über

Access VBA aus Abfrage die Datensätze in eine Excel übertragen

Anonym
2021-07-22T17:14:23+00:00

Hi!

Ich will die Datensätze eine Abfrage in eine vorhanden Exceldatei kopieren.

Eine neue Excel zu erstellen funktioniert leider nicht weil die bedingten Formatierungen welche ich benötige verloren gehen.

Folgender VBA Code funktioniert zwar mit Tabellen innerhalb der DB aber leider nicht mit meiner Abfrage.

Worin liegt mein Fehler?

Code:
Private Sub Befehl3_Click() <br>    Dim xlApp As Object ' Excel.Application <br>    Dim xlBook As Object ' Excel.Workbook <br>    Dim xlSheet As Object ' Excel.Worksheet <br>    Dim rst As DAO.Recordset <br> <br>    Set xlApp = CreateObject("Excel.Application") <br>    xlApp.Visible = True<br><br><br><br> Set xlBook = xlApp.Workbooks.Open("Pfad") <br>    Set xlSheet = xlBook.sheets("Tabellensheet")<br><br><br><br>    Set rst = CurrentDb.OpenRecordset("Abfrage") <br>    <br><br> xlSheet.Range("A2").CopyFromRecordset rst <br>    rst.Close <br>    Set rst = Nothing <br>    Set xlSheet = Nothing <br>    Set xlBook = Nothing <br>    Set xlApp = Nothing <br>End Sub

Eine Tabelle wird wie gewünscht in das Excelsheet nach A2 kopiert die Abfrage leider nicht.

Microsoft 365 und Office | Access | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare
{count} Stimmen

5 Antworten

Sortieren nach: Am hilfreichsten
  1. Anonym
    2021-07-22T18:10:00+00:00

    Wir verwenden einen Übersetzungsdienst, um unsere Benutzer zu unterstützen. Bitte entschuldigen Sie grammatikalische Fehler.

    Hallo Dominik, ich bin ein unabhängiger Berater und werde versuchen zu helfen.

    Ist der Name Ihrer Abfrage, eigentlich "Abfrage". Wenn ja, könnte das ein Problem sein, da es sich um ein reserviertes Wort handelt. OpenRecordset funktioniert jedoch sowohl mit einer Abfrage als auch mit einer Tabelle.

    Ein weiterer Punkt, auf den Sie sich beziehen, bezieht sich auf "Path" und "Tablesheet", aber das sind mianingless Strings.

    Außerdem scheint vor CopyFromRecordset ein Leerzeichen zu stehen. Das sollte es nicht geben.

    Einige andere Vorschläge wären, die Datensatzgruppe zu durchlaufen, um zu testen, ob die richtigen Daten in rst geladen werden. Und um den Code schrittweise durchzugehen, um sicherzustellen, dass die richtige Tabelle geöffnet und die aktive Zelle richtig ausgewählt wird.

    Wenn Sie weitere Klärungen dazu benötigen, zögern Sie nicht zu fragen.

    0 Kommentare Keine Kommentare
  2. Anonym
    2021-07-22T18:19:55+00:00

    Hi Scott!

    Die Abfrage heißt nicht "Abfrage" war nur als Beispiel genannt und auch "Pfad" und "Tabellensheet" sind nur Platzhalter für die tatsächlichen Werte.

    Es wird auch die richtige Abfrage geöffnet und auch Excel gestartet jedoch wird kein einziger Wert eingefügt. Vor CopyFromRecordset ist kein Leerzeichen

    0 Kommentare Keine Kommentare
  3. Anonym
    2021-07-23T14:26:10+00:00

    Hallo,

    Das Problem mit Pseudocode ist, dass Fehler evtl. durch Pseudo-Inhalte verschleiert werden. Z.B. wenn "Pfad" keinen Dateinamen enthält, oder zu lang ist (Grenze irgendwo bei 200 Zeichen).

    Liefert das Recordset Daten? Du fragst das im Code nicht ab. Öffne die Abfrage mal im Abfrage-Editor, um das zu prüfen.

    Die CopyFromRecordset-Zeile ist syntaktisch korrekt. Bedenke aber bitte, dass man CopyFromRecordset nicht schrittweise ausführen kann. Wenn du die Zeile testen willst, musst du auf der nachfolgenden Zeile rst.Close einen Haltepunkt setzen. Dann kannst du das Ergebnis in Excel sehen.

    Ansonsten, du kannst auch bedingte Formatierung in der Automation setzen. Die Methode dafür:

    xlSheet.Range("A2").FormatConditions.Add ...

    Gruss - Peter

    0 Kommentare Keine Kommentare
  4. Anonym
    2021-10-08T13:23:58+00:00

    Hi,

    sag mal, hast du es eigentlich noch hinbekommen?

    Gruß Oliver

    0 Kommentare Keine Kommentare
  5. Anonym
    2021-10-11T08:59:51+00:00

    Hi!

    Ja aber über einen anderen Weg.

    Ich hab mir quasi eine Exceldatei als Formarvorlage erstellt. Bei dieser werden vor dem Export alle Zellen geleert. Somit bleiben die Formatierungen erhalten und anschließend kopier ich die neuen Werte in das Excel-File.

    Lg

    0 Kommentare Keine Kommentare