VBA Excel. Bestand opslaan als:

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo. Ik heb een basis Excel bestand. Dit bestand moet onder een andere bestandsnaam (afkomstig van een cel waarde) en het default pad worden opgeslagen dmv. een Dialogbox.
De nieuwe bestandsnaam krijg ik voor elkaar maar het pad niet. Ik zoek een oplossing waarbij het bestand wordt opgeslagen en getest kan worden (False or True) op het activeren van de Annuleren knop in het dialoogvenster zoals in het voorbeeld. Ik dacht na veel puzzelen en zoeken aan de volgende (deels werkende) code. Bedankt.

PHP:
Dim strFileName As Variant 
Dim strPath As String

  strFileName = Range("B4").Value
  strPath = ("D:\")
  
    strFileName = Application.Dialogs(xlDialogSaveAs).Show(strPath & strFileName)
                                         
    If strFileName = False Then
    MsgBox "Bestand is niet opgeslagen! "
 
Doe het eens zo:
Code:
With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = "D:\"
    If .Show <> 0 Then
        ActiveWorkbook.SaveAs .SelectedItems(1) & "\" & Range("B4").Value & ".xlsm", 52
    Else
        MsgBox "Bestand is niet opgeslagen!"
    End If
End With
 
Laatst bewerkt:
Waarom niet meteen ?

Code:
[COLOR="#0000FF"]Sub[/COLOR] M_snb[COLOR="#0000FF"]()[/COLOR]
   ActiveWorkbook.SaveAs "D:" & Range("B4").Value, 52
[COLOR="#0000FF"]End Sub[/COLOR]
 
Laatst bewerkt:
Dank voor je snelle antwoord. Ik heb de code getest. Het dialoogvenster opent met het juiste pad maar geen bestandsnaam (Range("B4") voorgezet. Bij mijn code was het juist andersom (geen pad maar bestandsnaam) en met dezelfde celverwijzing B4.
Als ik in de dialoogbox zelf de bestandsnaam invoer, dan wordt bij OK de foutmelding gegeven: "Het pad bestaat niet. Controleer het pad en probeer opnieuw". Vreemd, ik voer de bestandsnaam in en het pad wordt gemeld terwijl in de dialoogbox het "automatisch" pad goed is ingevuld.
 
Laatst bewerkt:
Met de voorgaande info van zowel snb als van mij is niks mis.
Je gebruikt het dan niet goed.

De bestandsnaam staat toch in B4?
Dan heb je alleen het pad nodig.
En hoe je dat doet liet ik al zien.
 
Laatst bewerkt:
Als de lokatie (pad + naam) 100% vaststaat is een keuzescherm overbodig.
 
Precies, maar dat was me dus niet echt duidelijk.
Wellicht dat TS daar nog even op wil reageren.
 
Allen, dank voor het meedenken. Het pad en de bestandsnaam staan wel vast maar wil nog wel voor de gebruiker de fleibiliteit houden om eea. te kunnen aanpassen. Ik zag dat niet bij de SaveAs oplossing. Ik heb daarom mijn eerste code met de DialogSaveAs toegepast.

De code is als volgt geworden:

PHP:
[I]'Bestand Opslaan als[/I]


Dim strFileName As Variant
Dim sFilename As String
    sFilename = Sheets("Pand").Range("B2") & "_" & Sheets("Pand").Range("C2") & "_" & Sheets("Pand").Range("E2")    [I]'aw adres van de klant[/I]
    strFileName = Application.Dialogs(xlDialogSaveAs).Show(sFilename, 52)
                                      
    If strFileName = False Then
        MsgBox "Oh, oh . . . de offerte is niet opgeslagen! "
    GoTo Quit
    
Else

[I]'Extra nabewerking van de offerte[/I]

[I]'Bestand na de nabewerking nog eens opslaan zonder systeemmeldingen van overschrijven van het bestand[/I]
Application.DisplayAlerts = False
        ActiveWorkbook.Save
    Application.DisplayAlerts = True
    MsgBox "Gelukt! De offerte is gereed en opgeslagen als: " & sFilename & ".xlsm"

End If
 
Quit:
End Sub
Ik ben fijn geholpen en sluit deze vraag, dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan