collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 58
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13910
  • stats Beiträge insgesamt: 65777
  • stats Themen insgesamt: 8873
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Speichern Dialog in Excel automatisch nach öffnen aus Access anzeigen  (Gelesen 3329 mal)

Offline -Rockbiest-

  • Newbie
  • Beiträge: 43
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
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
Hallo,
ruf vor dem SaveAs den Filedialog auf und wähle damit die Datei zum Abspeichern auf oder benutze die GetSaveAsFilename-Funktion.

Offline -Rockbiest-

  • Newbie
  • Beiträge: 43
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

 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
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?

Offline -Rockbiest-

  • Newbie
  • Beiträge: 43
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?
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23265
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
.
.

Offline -Rockbiest-

  • Newbie
  • Beiträge: 43
Jippi funzt :)
Lass mich raten, für Word Dateien funktioniert das wieder ganz anders :D
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3108
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.
Freundliche Grüße
MaggieMay