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

macro BeforSave

Status
Niet open voor verdere reacties.

peter16

Gebruiker
Lid geworden
2 dec 2000
Berichten
87
Hallo,

Ik heb een macro in ThisWorkbook staan die moet checken/bewerkstelligen dat een bestand (een factuur) volgens vaste naamsopbouw wordt opgeslagen. Bestandsnaam = vast pad + debiteurennummer + factuurnummer. Hiertoe heb ik onderstaande macro

Private Sub Workbook_BeforeSave(ByVal saveasUI As Boolean, cancel As Boolean)

Dim Naam$
Naam = ActiveWorkbook.Name

Dim welniet As Integer
welniet = MsgBox("Wilt u dit bestand op de standaardwijze opslaan ('debnr_faktnr.xls')?", vbYesNo)
If welniet = vbNo Then
MsgBox ("Het bestand is niet opgeslagen.")
End
Else

Dim strpath As String
Dim strdebnr As String
Dim strfaktnr As String

strpath = Sheets("Vaste instellingen").Range("C3")
strdebnr = Sheets("faktuur").Range("B7")
strfaktnr = Sheets("faktuur").Range("e7")
'***als er niets ingevuld is bij debnr wordt gevraagd om directorynaam
If Len(strdebnr) = 0 Then
strdebnr = InputBox("Onder welke naam moet deze faktuur worden opgeslagen?", "Opslaan")
Else
End If
'***als niets wordt ingevuld wordt er niets opgeslagen
If Len(strdebnr) > 0 Then
If Len(Dir(strpath & "nul")) > 0 Then

ActiveWorkbook.SaveAs Filename:= ' strpath & strdebnr & "_" & strfaktnr, FileFormat:=xlNormal

'End If
Else
MsgBox "U hebt geen geldige faktuurnaam opgegeven of:" + Chr(13) + "de standaardmap bestaat niet"
MsgBox "Er is niets opgeslagen.", vbExclamation, "Vul het juiste gegevens in en probeer opnieuw"
End If
End If
End If
End Sub

Het probleem is nu dat, nadat ik het bestand op de standaardwijze middels de macro heb opgeslagen, het bestand nogmaals opgeslagen zal worden (niet meer middels de macro maar gewoon door de save opdracht die ik gegeven heb). De proceduren blijft dan steken op het Opslaan als venster omdat de bestandnaam inmiddels al bestaat. Dat is nou net niet de bedoeling. Wie weet hoe ik dit laatste venster kan voorkomen?

Als toelichting gewenst cq noodzakelijk is dan hoor ik het graag.

Peter
 
De functie die je gebruikt heeft een parameter 'cancel'. Omdat jij het opslaan met eigen code doet moet je de overgeërfde opslagcode laten vervallen door deze parameter op 'true' te zetten.

Dus gewoon een regeltje

cancel=true
 
bedankt

Hallo Captain,

Bedankt voor deze zeer handige code. Hier kan ik zeker wat mee.

Peter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan