Export in Excel nur bestimmte Spalten
Karl Donaubauer
Gesendet: 14.01.14 12:35
Betreff: RE: Export in Excel nur bestimmte Spalten



Elite Veteran

Beiträge: 848
50010010010025
Ort: Wien
Hallo, Michael!

lengaumi - 13.01.14 21:38
...
In Diesem Endlosformular habe ich 3 Filter Jahr, Monat, bezahlt. Diese können beliebig kombiniert werden.
...
Me.Filter = ...
Das "Makro exportieren" exportiert den Recordset aus dem Endlosformular - einfach die momentan angezeigten Datensätze.
Ist nur eine Ausgabe Aktion als Excel. Mehr nicht. Objekttyp: Tabelle, Objektname: Formularname.
Da müsste Objekttyp Formular sein, damit es funktioniert.

Alle Felder/Steuerelemente sind an eine Abfrage gebunden. Die Abfrage beinhaltet 2 Tabellen. 1 Tabelle Personendaten, 2 Tabelle Einkäufe der Personen 1:n Beziehung.

Im Endlosformular werden in einem weitern Feld mit der Formel Wert(DomSumme("Kosten";"Leistungen";"Produkte_ID=" & [Produkte_ID])) aus einer dritten Tabelle Zahlen addiert.

Alle 3 Tabellen stehen in Beziehung 1 Tab Personendaten 1:n 2 Tab Einkäufe 1:n Produkte.

Es geht mir nur ums Format beim Exportieren und ob man Felder "sperren" kann, damit sie nicht exportiert werden.

Naja, du kannst unliebsame Felder bzw. Steuerelemente vom Export ausnehmen, indem du sie während des Exports unsichtbar machst. Also ca.

Me!BoesesSteuerelement.Visible = False
' OutPutTo entspricht der Makroaktion AusgabeIn
DoCmd.OutputTo acOutputForm, Me.Name, acFormatXLS, "c:\Foo\Test.xls"
Me!BoesesSteuerelement.Visible = True

Formatieren kannst du so aber nix. Dafür musst du eine Abfrage exportieren. Mögliches Vorgehen:

Du erstellst eine neue Abfrage, Inhalt egal, denn sie dient nur als Behälter. Nennen wir sie hier "qryExport". Im Code machst du dann sowas:

Dim strSQL As String

' nur gewuenschte Felder im SELECT + das in eine Zahl ungewandelte DSUM-Dings
' Formularfilter als WHERE-Bedingung
strSQL = _
"SELECT Feld1, Feld2, cdbl(DSum('Kosten','Leistungen','Produkte_ID=' & Produkte_ID))" & _
" FROM (SELECT * FROM DeineFormularabfrage) WHERE " & Me.Filter

' ins Direktfenster drucken, um ggf. Fehler zu finden oder im Forum zu posten
Debug.Print strSQL

' SQL-Text der Dummy-Abfrage aendern
CurrentDb.QueryDefs("qryExport").SQL = strSQL

' Abfrage exportieren
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
"qryExport", "c:\Foo\Test.xls", True

Der Code geht beispielhaft davon aus, dass das als Zahl zu exportierende Feld das DSum-Dings ist. "DeineFormularabfrage" wäre der Name der gespeicherten Formularabfrage. Alternativ kannst du da auch den SQL-String reinbasteln.

Wenn es nicht klappt, dann schildere wo genau und poste den SQL-String aus dem Direktfenster.

-----
Servus
Karl
*********
https://www.donkarl.com/devcon Access-Online-Konferenz 18.+19.4.
Access Forever: https://www.accessforever.org
Access News: https://www.youtube.com/playlist?list=PLVCeBbJIMDvdJ8ghMbEakJ6_EQyvy...
Access-Entwickler-Konferenz: https://www.donkarl.com/?aek
Top of the page Bottom of the page