Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: -Rockbiest- am Mai 03, 2015, 14:48:06

Titel: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: -Rockbiest- am Mai 03, 2015, 14:48:06
Hallo,
ich weiß die Problem hier nehmen zu, ich hoffe aber mal, dass ich euch vorerst dann das letzte Mal nerve.

Und zwar habe ich Excel-Datei, die will ich mit Daten füllen (funktioniert auch)
Dann möchte ich sagen, das nach füllen, automatisch der "Speichern Unter" Dialog öffnet mit vordefiniertem Speichertort und Namen, den man jedoch nach belieben noch ändern kann. (funktioniert nicht)
Es funktioniert lediglich mit "objExcel.ActiveWorkbook.SaveAs" - da hab ich jedoch als Nutzer nicht mehr die Option den Speicherort zu ändern.

Private Sub cmd_kundenliste_inexcel_Click()
    Dim rst As DAO.Recordset
    Dim objExcel As Excel.Application
    Dim objWorkbook As Excel.Workbook
    Dim strSQL As String
    Dim i As Integer
On Error Resume Next

    Set objExcel = GetObject(, "Excel.Application")
    If Err.Number = 429 Then
        Set objExcel = CreateObject("Excel.Application")
    End If
    Set objWorkbook = objExcel.Workbooks.Open("C:\Users\XXXL\Desktop\XXX\Kundenliste_export")
       
    strSQL = "SELECT kunde_id, kunde_nummer, kunde_geschlecht, kunde_kunde_unt_nachname,kunde_vorname, kunde_strasse_und_nr, kunde_plz, kunde_stadt, kunde_land, kunde_tel, kunde_fax, kunde_mobil, kunde_email FROM tbl_kunden_1000"
   
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
   
    Do While Not rst.EOF
        With objWorkbook.Sheets(1)
            .Cells(2 + i, 1) = rst(1)
            .Cells(2 + i, 2) = rst(2)
            .Cells(2 + i, 3) = rst(3)
            .Cells(2 + i, 4) = rst(4)
            .Cells(2 + i, 5) = rst(5) & vbCrLf & rst(6) & " " & rst(7) & vbCrLf & rst(8)
            .Cells(2 + i, 6) = rst(9)
            .Cells(2 + i, 7) = rst(10)
            .Cells(2 + i, 8) = rst(11)
            .Cells(2 + i, 9) = rst(12)
            i = i + 1
        End With
        rst.MoveNext
   
    Loop
    rst.Close
   
    objExcel.Visible = True
       
    Dim Dateiname As String
    'Dateiname basteln - Jahr Monat Tag
    Dateiname = "Kundenliste" & Format(Now(), " - " & "dd/mm/yyyy") & ".xlsx"
'Das funktioniert nicht
'    Dialog "Speichern unter" aufrufen und Dateinamen vorgeben
'    Application(xlDialogSaveAs).Show Dateiname
'Das funktioniert
    objExcel.ActiveWorkbook.SaveAs "C:\Users\XXXL\Desktop\XXX\" & Dateiname
'    objExcel.Workbooks.Close
   
   
    Set objExcel = Nothing
   
End Sub


Kann es sein, dass ich noch eine Library laden muss?
Excel 15.0 ist bereits geladen
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: DF6GL am Mai 03, 2015, 16:13:17
Hallo,
ruf vor dem SaveAs den Filedialog auf und wähle damit die Datei zum Abspeichern auf oder benutze die GetSaveAsFilename-Funktion.
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: -Rockbiest- am Mai 03, 2015, 18:01:37
Dankeschön :)
Hab das mal nun umgeschrieben:

objExcel.Visible = True
       
       
    Dim Dateiname As String
    'Dateiname basteln - Jahr Monat Tag
    Dateiname = "Kundenliste" & Format(Now(), " - " & "dd/mm/yyyy") & ".xlsx"
   
'Dialog "Speichern unter" aufrufen und Dateinamen vorgeben   
    Application.FileDialog(msoFileDialogSaveAs).InitialFileName _
        = "C:\Users\XXXL\Desktop\XXX\" & Dateiname
    Application.FileDialog(msoFileDialogSaveAs).Show
   
    Set objExcel = Nothing
   
End Sub


Er öffnet nun die Datei, zeitgleich auch das Speichern Unter Fenster, mit den Inhalten wie ich sie gerne hätte. Beim drücken auf Speichern, speichert er es aber nicht :D

Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: DF6GL am Mai 03, 2015, 18:10:18
Hallo,

nee, so nicht, mit dem Filedialog soll der Dateiname ausgewählt werden, der bei der SaveAs-Methode einzusetzen ist.


Ansonsten, wenn der Excel-Dateiname schon bekannt ist ("C:\Users\XXXL\Desktop\XXX\" & Dateiname), kann der doch gleich bei der SaveAs-Methode eingesetzt werden...

Oder habe ich was falsch verstanden?
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: -Rockbiest- am Mai 03, 2015, 18:49:27
Also der Dateiname soll als Vorgabe direkt drin stehen, und mit dem Klick auf "speichern" abschließen. Das Öffnen des Fensters hat nur den Grund, falls der Nutzer aus irgendwelchen Gründen die Datei doch irgendwo anders speichern will oder anders benennen möchte, aber in Schätzungsweise 95% der Fälle würden die Vorgaben so beibehalten werden.

Das heißt ans Ende nochmal:
objExcel.ActiveWorkbook.SaveAs?
Wie sag ich dem Befehl dann, dass er (falls der Zielpfad doch noch geändert wurde) den Zielpfad aus dem Dialog übernimmt?
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: DF6GL am Mai 04, 2015, 08:40:28
Hallo,

schau doch mal die VBA-Hilfe zu GetSaveAsFilename  an...



.
.
    Dateiname = "Kundenliste" & Format(Now(), " - " & "dd/mm/yyyy") & ".xlsx"
     Dim SaveFn
     SaveFn = objExcel.GetSaveAsFilename ("C:\Users\XXXL\Desktop\XXX\" & Dateiname,
     "Excel-Dateien,*.xlsx", , "Datei wählen")
   If Not SaveFn Then
    objExcel.ActiveWorkbook.SaveAs SaveFn
   Else
    MsgBox " Nicht gespeichert"
   End If
   

   objExcel.Workbooks.Close
.
.
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: -Rockbiest- am Mai 04, 2015, 20:56:04
Jippi funzt :)
Lass mich raten, für Word Dateien funktioniert das wieder ganz anders :D
Titel: Re: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen
Beitrag von: MaggieMay am Mai 04, 2015, 22:07:55
Na klar, dazu musst du in die Objektbibliothek von Word einsteigen.

Das firmiert zwar alles unter dem Logo von Microsoft, doch leider haben die Programmierer der diversen Produkte sich nicht untereinander abgesprochen.