• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opslaan als - VBA

Status
Niet open voor verdere reacties.
Probeer dit eens.

Code:
Private Sub CommandButton1_Click()
Dim IntialName As String
Dim fileSaveName As Variant
InitialName = Range("D34") 'of andere cel
fileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, _
    fileFilter:="Excel Files (*.xlsx), *.xlsx")

If fileSaveName <> False Then
    MsgBox "Save as " & fileSaveName
End If
End Sub
 
Hey Albert, nee die werkt niet. Krijg wel een melding dat dezz is gesaved, maar ik zie niets effectief
 
Je moet wel het goede werkwoord in het Nederlands gebruiken om de code goed te laten lopen:
Ik sla een bestand op, dat sla jiij natuurlijk ook op, zodat wij beiden de bestanden opslaan en ze daarna als opgeslagen bestanden opgeslagen zijn.

Code:
Sub M_snb()
    With Application.FileDialog(2)
       .InitialFileName = ActiveSheet.Cells(34, 4)
        If .Show Then ActiveWorkbook.SaveCopyAs .SelectedItems(1)
     End With
End Sub
 
Laatst bewerkt:
Mijn excuses voor het verkeerd gebruiken van het werkwoord :)
@SNB, jouw code werkt, enkel als ik deze save onder .xlsx krijg ik het volgende te zien
errorcap.JPG
 
Jij bent de enige die kan zien wat er in het werkblad staat.

Maar als je deze VBA-code in het werkboek hebt staan kun je het natuurlijk niet als xlsx opslaan (les 2 basiscursus Excel).
 
Laatst bewerkt:
Is er dan geen andere mogelijkheid dat die dan standaard .XLSM neemt, zodat andere hier niet moeten over nadenken?
 
Ik ben natuurlijk absoluut een leek t.o.v. SNB :d, na een beetje klooien kwam ik hier op uit.
Code:
Private Sub CmbOpslaan_Click()
 Dim Fldr As String
 
 MsgBox "naam van het op te slaan bestand is:  " & Range("D34")
 
    
   With Application.FileDialog(4)
      .AllowMultiSelect = False
      If .Show <> -1 Then Exit Sub
      Fldr = .SelectedItems(1)
   End With
   
   
  If MsgBox("het bestand wordt opgeslagen in de map:" & Chr(13) & Fldr & Chr(13) & Chr(13) & "onder de naam:  " & Range("D34"), vbOKCancel + vbQuestion) = vbOK Then
    Application.DisplayAlerts = False
    
    ActiveWorkbook.SaveAs Fldr & "\" & Range("D34") & ".xlsx", 51
    Application.DisplayAlerts = True
  End If
End Sub

Zal bijna zeker stuk korter/eenvoudiger kunnen.
 
Laatst bewerkt:
Gebruik in het werkblad in de cel met de bestandsnaam geen extensie.

De kopie van het huidige bestand krijgt automatisch de extensie van het bestand waarvan het een kopie is.
Omdat deze macro in het huidige bestand staat is het daarom automatisch een .xlsm of xlsb-bestand.
 
Als de filterindex bij de laatste keer van opslaan ".xlsx" was, wordt deze gewoon overgenomen in de dialog.

Het is handiger om een filter te plaatsen.

Code:
With Application.FileDialog(2)
       .InitialFileName = ActiveSheet.Cells(34, 4)
       .FilterIndex =[COLOR=#ff0000] 3[/COLOR]  [COLOR=#0000ff] '2 = .xlsm en 3 = .xlsb [/COLOR]
        If .Show Then ActiveWorkbook.SaveCopyAs .SelectedItems(1)
     End With
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan