• 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 .XLSM

Status
Niet open voor verdere reacties.

Roeldahool1

Gebruiker
Lid geworden
11 nov 2011
Berichten
52
Beste slimmerikken!

Is het mogelijk om het handmatig opslaan van een excelbestand te blokkeren, en in plaats daarvan een macro te gebruiken die men nog wel de keuze geeft om het bestand een naam te geven,maar niet de bestandsextensie te laten wijzigen? De bestandsextensie dient te zijn: .xlsm om de macro's te behouden.

Het zou me enorm helpen!

:thumb:Groet,

Roel
 
Bedankt voor je reactie!
Echter, men mag het bestand wel 'opslaan als', sterker nog: dat moet dagelijks gebeuren!

Het gaat er voornamelijk om dat de macro's in het bestand blijven. Ik wil mensen de mogelijkheid ontnemen om het bestand op te slaan als .xls, waardoor de macro's verloren gaan. Als dat op een andere manier kan, dan ben ik erg benieuwd naar het HOE?!
 
Hetzelfde antwoord :).
Daarbij maak je zelf de optie om op te slaan b.v. d.m.v. een knop.
Zodoende heb je opslaan zelf in de hand.
 
sorry, maar ik snap het niet.

De code werkt ook niet. Een regel wordt rood. (excel 2007)

Private Sub Workbook_BeforeSave _

(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True

End Sub
 
Probeer eens:

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
End Sub
 
held!

De knop waar je over sprak wil ik nu gaan maken. Op verschillende fora vind ik alleen codes die het bestand direct in een bepaalde map opslaan. C:/bladiebla/

Dat wil ik niet, omdat de map elke maand wijzigt. De code die ik nodig heb geeft bij voorkeur het normale 'opslaan als' venster. Alleen nu dus alleen met .xlsm als mogelijke bestandsextensie. Is dit überhaupt mogelijk?
 
ik merk trouwens dat de code:

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
End Sub


ook effect heeft op VBA codes die het bestand willen 'opslaan als', zoals:

Sub SaveAs()
ActiveWorkbook.SaveAs
End Sub


Gooit dat geen roet in het eten m.b.t. de code die het bestand XLSM op moet gaan slaan?
 
Probeer gewoon eens.
Maak de code zo dat het bestand als xlsm wordt opgeslagen.
Daarna testen.
Ik ben benieuwd.
 
ik heb het geprobeerd. Het werkt niet. Ik geloof dat ik mezelf buiten heb gesloten haha
Wie heeft de sleutel?
 
Wat heb je geprobeerd?
Zet de hele code eens in deze post en leg uit wat de code doet.
 
ik merk trouwens dat de code:

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
End Sub


ook effect heeft op VBA codes die het bestand willen 'opslaan als', zoals:

Sub SaveAs()
ActiveWorkbook.SaveAs
End Sub

Dat heb ik dus gedaan. Eerst een code gebruikt die 'opslaan als' verhindert. Daarnaast een code gebruikt die juist is gemaakt om te 'opslaan als'. die spreken elkaar dus tegen. Is dat te omzeilen?
 
Ja, de code om het bestand op te slaan zet je in de bovenste code.
Dus zoiets (niet gecontroleerd):

Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then Cancel = True
ActiveWorkbook.SaveAs
End Sub
 
Dat geeft helaas hetzelfde effect. De ene code blijft de ander tegenspreken. Ook als ik de regel 'ActiveWorkbook.SaveAs' boven de regel 'If SaveAsUI = True Then Cancel = True' plaats werkt het niet. GRMBL! :confused:
 
Probeer het eens met onderstaande.
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim varWorkbookName As String, FileFormatValue As Integer
    On Error GoTo Quit
    Application.EnableEvents = False
    If SaveAsUI = True Then
        varWorkbookName = Application.GetSaveAsFilename( _
        fileFilter:="Excel Macro Enabled Workbook (*.xlsm), *.xlsm")
        Cancel = True
        If varWorkbookName <> "False" Then
            Select Case LCase(Right(varWorkbookName, Len(varWorkbookName) - InStrRev(varWorkbookName, ".", , 1)))
            Case "xlsm": FileFormatValue = 52
            End Select
        ActiveWorkbook.SaveAs varWorkbookName
        End If
    End If
Quit:
    If Err.Number > 0 Then
        If Err.Number <> 1004 Then
            MsgBox "Error: " & Err.Number & Err.Description & vbCrLf & vbCrLf & vbCrLf & _
            "Title", vbCritical
        End If
    End If
    Application.EnableEvents = True
End Sub
 
Rudi, je bent geweldig! Echt fantastisch!! Deze code doet precies wat ik wilde. Ik sla hem op en ga hem nog vaak gebruiken. Echt enorm bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan