Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: benjamin.grimm am April 08, 2014, 11:10:50

Titel: export abfrage nach excel, spalte überspringen.
Beitrag von: benjamin.grimm am April 08, 2014, 11:10:50
Hallo zusammen,

ich exportiere via VBA Daten von Access nach Excel.

Die Daten werden dann ins Tabellenblatt 1, beginnend mit Zelle A4 geschrieben.

Wie kann ich es machen, das er in Spalte D nichts schreibt. Also diese einfach auslässt bzw. überspringt.

Dim xlApp As Object ' Excel.Application
Dim xlBook As Object ' Excel.Workbook
Dim xlSheet As Object ' Excel.Worksheet

Dim rst As DAO.Recordset

'Excel-Objekt öbffnen und Workbook hinzufügen
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open("Z:\Export.xlsx")

'In Tabellenblatt Gesamt schreiben

Set xlSheet = xlBook.Worksheets(1)
Set rst = CurrentDb.OpenRecordset("Gesamt")
xlSheet.Range("A4").CopyFromRecordset rst
rst.Close

'Objekte schließen
Set rst = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing


Grüße
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: DF6GL am April 08, 2014, 12:03:00
Hallo,

was ist denn "Gesamt" in dieser Konstrukton?

Du könntest eine Abfrage erstellen, die für die Excel-Spalte "D" einen NULL-Wert liefert:


Select FeldA, FeldB, FeldC, Null As SpalteD, FeldE from Gesamt
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: database am April 08, 2014, 12:04:01
Hallo,

nach dem Einfügebefehl fügst du folgende Zeilen hinzu:

Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Das fügt eine leere Spalte an der Position 'D' ein.
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: benjamin.grimm am April 08, 2014, 12:26:44
Die Struktur von der Abfrage ist folgende.

Ich habe eine Kreuztabelle die ich schon folgendermaßen sortiert habe. Jeweils am Monatsanfang zeigt es mir die nächsten 12 Monate.

Also Beispiel April, dann startet das Datum bei April.

In der Tabelle steht dann immer die Anzahl der Bauplätze pro Land pro Monat.

Es sollen immer die nächsten 12 Monate angezeigt werden.

\Datum April Mai Juni Juli August September Oktober November Dezember Januar Februar März
Land

AT
BE

In der Spalte die ich überspringen möchte steht die Summe für das laufende Jahr drin.

Also heute April bis Dezember.

Diese befindet sich immer an der gleichen Spalte.

Ich möchte nun einfach das er diese überspringt.

Wisst ihr was ich meine?
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: database am April 08, 2014, 13:15:46
Hallo,

schreib einfach so ...  8)


Dim xlApp As Object ' Excel.Application
Dim xlBook As Object ' Excel.Workbook
Dim xlSheet As Object ' Excel.Worksheet

Dim rst As DAO.Recordset

'Excel-Objekt öbffnen und Workbook hinzufügen
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open("Z:\Export.xlsx")

'In Tabellenblatt Gesamt schreiben

Set xlSheet = xlBook.Worksheets(1)
Set rst = CurrentDb.OpenRecordset("Gesamt")
xlSheet.Range("A4").CopyFromRecordset rst
rst.Close

'Leere Spalte an Position D einfügen
'----------------------------------------------------------------------
Columns("D:D").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

'----------------------------------------------------------------------

'Objekte schließen
Set rst = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: benjamin.grimm am April 08, 2014, 13:31:20
danke für die schnelle Antwort.

hey ich hab Spalte D durch Spalte AB ersetzt.

Irgendwie fügt er jetzt 12 Spalten links von AB ein.

Ich möchte nur das er die Spalte AB nicht überschreibt bzw. gleich lässt und in Spalte AC das Abfrageergebniss weiter schreibt.

Hab ich was falsch gemacht?

Dim xlApp As Object ' Excel.Application
Dim xlBook As Object ' Excel.Workbook
Dim xlSheet As Object ' Excel.Worksheet

Dim rst As DAO.Recordset

'Excel-Objekt öbffnen und Workbook hinzufügen
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open("Z:\BUS MMM C\20000 Bestandsmanagement & Net Assets\21000 Bestandsführung\21200 Reporting\21240 Bestände Vorratsfzge\2014\Datenbank\Export.xlsx")

'In Tabellenblatt Gesamt schreiben

Set xlSheet = xlBook.Worksheets(1)
Set rst = CurrentDb.OpenRecordset("Vorratseinplannung_MB_Gesamt")
xlSheet.Range("R7").CopyFromRecordset rst
rst.Close

'Leere Spalte an Position AB einfügen

Columns("AB:AB").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Titel: Re: export abfrage nach excel, spalte überspringen.
Beitrag von: database am April 09, 2014, 20:52:14
Hi,

ZitatIrgendwie fügt er jetzt 12 Spalten links von AB ein.

Hmmm... das kann nicht sein, da der Befehl ... Shift:=xlToRight  ...  das Einfügen der leeren Spalte RECHTS von der Markierung veranlasst!

Bist du sicher, dass die Spalte AB mit deiner Kopieraktion überhaupt betroffen ist?

Im Anhang findest du eine Beispieldatei mit der genau der Vorgang 'eine leere Spalte bei AB einfügen' ausführbar ist.
Makro ist mit STRG+a zu starten.