Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: JB am Oktober 24, 2016, 16:14:40

Titel: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: JB am Oktober 24, 2016, 16:14:40
Hi,

ich habe eine Datenbank, die man komplett über Formulare befüllt und die im Hintergrund mit VBA programmiert wurde. Dabei habe ich unter anderem ein Zusammefassungsform, wo alle wichtigen Informationen über einen Kunden aufgeführt sind (rund 40 Felder).

Nun ist die Frage, wie ich den Inhalt dieses Form per Klick auf einen Buttom (in dem Form) in Excel exportieren kann, sodass ich es auch den Kollegen zugänglich machen kann, die nicht über Access verfügen. Also vll einmal Schritt für Schritt:

1) Es muss per Buttom Click eine vorgefertigte Excel Datei geöffnet werden, die aber nicht überschrieben werden soll. Die Vorlage möchte ich vorgestalten und irgendwo auf meiner Festplatte ablegen.
2) Nun möchte ich die Inhalte aus den Textboxen in die Felder in der Excel Datei schreiben, dh irgendwie "A1 = Me.Name".

Weiß jemand, wie ich dahin komme?

Vielen Dank!

Jelto

Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: DF6GL am Oktober 24, 2016, 16:50:52
Hallo,


siehe mal hier:  http://dbwiki.net/images/3/3f/AccSampleAccessToExcel.zip
Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: JB am Oktober 24, 2016, 17:53:49
Hi,

kann die Datei leider nicht öffnen. Habe das jetzt wie folgt gemacht:

Private Sub Excel_Export_Click()

Dim xlAnw As Excel.Application
Dim xlBuch As Excel.Workbook
Dim xlArbBlatt As Excel.Worksheet

Set xlAnw = CreateObject("Excel.Application")
Set xlBuch = xlAnw.Workbooks.Open("C:\Vorlage.xls") 'Die Excel-Datei öffnen
Set xlArbBlatt = xlBuch.Worksheets(1) 'erstes Sheet

'General information
xlArbBlatt.Range("B3").Value = Me.Name
xlArbBlatt.Range("B4").Value = Me.Year

xlBuch.Save
xlAnw.Quit

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

End Sub


Dabei wird allerdings die bestehende Vorlage überschrieben.

Kann ich es so ändern, dass
1) Die Orginaldatei unverändert bleibt.
2) Sich das neue Dokument in Excel sofort öffnet und ich es dann abspeichern kann. Idealerweise wird der Speicherort schon vorausgewählt.

Danke.
Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: DF6GL am Oktober 25, 2016, 08:31:11
Hallo,


1) Schau mal in die Hilfe zu SaveAS
2) Die Eigenschaft "Visible" des  Excel-Objekts muss nur auf "ja"  gesetzt werden.
Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: MaggieMay am Oktober 26, 2016, 01:35:03
Hallo,

wenn du eine Excel-Datei im Sinne einer Vorlage verwenden willst, so solltest du
1. die Datei in eine *.xlt Datei umbenennen und
2. eine neue Datei auf Basis dieser Vorlage entsprechend öffnen

Dazu setzt du die ADD-Methode des Workbooks-Objekts ein.
Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: JB am Oktober 31, 2016, 15:46:25
Danke DF6GL und MaggieMay,

@MaggieMay
Ok, und wie funktioniert das genau?

Also Umbenennen schaffe ich denke ich, allerdings weiß ich dann nicht, was ich außerdem noch verändern muss.

Danke
Titel: Re: Daten aus befülltem Formular in ein neues Excel-Sheet übertragen
Beitrag von: MaggieMay am Oktober 31, 2016, 19:04:35
Du solltest die xlt-Datei besser via "Speichern unter" aus Excel heraus erzeugen und nicht durch Umbenennen, da war ich wohl nicht ganz bei der Sache. Das halte ich für sicherer, ausprobiert habe ich das jedoch nicht.

Zweitens könntest du dich mal in der Excel-Hilfe umsehen und dir einen Überblick über die hier zu verwendenden Methoden machen. Dazu sollte das Stichwort "Add" eigentlich schon genügen, um entsprechende Erläuterungen und auch Beispiele in der Hilfe zu finden.

Der fertige Code könnte dann so aussehen:
Private Sub Excel_Export_Click()
    Dim xlAnw As Excel.Application
    Dim xlBuch As Excel.Workbook
    Dim xlArbBlatt As Excel.Worksheet

    Set xlAnw = CreateObject("Excel.Application")
    Set xlBuch = xlAnw.Workbooks.Add("C:\Vorlage.xlt") 'Eine neue Excel-Datei auf Basis einer Vorlage öffnen
    Set xlArbBlatt = xlBuch.Worksheets(1) 'erstes Sheet

    'General information
    xlArbBlatt.Range("B3").Value = Me.Name
    xlArbBlatt.Range("B4").Value = Me.Year

    xlBuch.SaveAs "C:\datei_neu.xls"
    xlAnw.Quit

    Set xlBuch = Nothing
    Set xlArbBlatt = Nothing
    Set xlAnw = Nothing
End Sub