Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

export abfrage nach excel, spalte überspringen.

Begonnen von benjamin.grimm, April 08, 2014, 11:10:50

⏪ vorheriges - nächstes ⏩

benjamin.grimm

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

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

database

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.

benjamin.grimm

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?

database

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

benjamin.grimm

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

database

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.