Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 10 van 10

Onderwerp: BeforeSave Naam controle

  1. #1
    Senior Member
    Geregistreerd
    31 maart 2017
    Vraag is niet opgelost

    BeforeSave Naam controle

    Beste helpers van het forum,

    Nu wil ik een 'stop' inbouwen voor het uitvoeren voor andere macro's onder het Workbook.BeforeSave-event. Ik zou willen dat als de gebruiker van het document via het standaard menu, bestand en opslaan als, dat het document gaat controleren of de opgegeven naam voorkomt in een bepaalde database. Nu kom ik er alleen niet helemaal uit hoe ik de opgegeven naam kan gebruiken voor de gehele controle in de database. Waarschijnlijk een simpel iets, maar ik kan het niet vinden.

    Mvg,
    Laatst aangepast door vaneijk : 9 oktober 2019 om 21:00

  2. #2
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Nu wil ik weten waar het over gaat. Oh ja we hebben allemaal het bestandje in bezit waar het over gaat?
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  3. #3
    Senior Member
    Geregistreerd
    31 maart 2017
    @VenA, Het gaat niet zo specifiek over het bestand wat ik probeer te maken, misschien heb ik niet goed of vreemd uitgelegd wat ik bedoel.

    Ik wil zoiets als onderstaand voorbeeld:
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI = True Then
         ThisWbName = Thisworkbook.Name
         NewSaveName = ''de nieuwe opgegeven naam bij 'opslaan als'
         Check_Db ThisWbName, NewSaveName
    end if
    end sub
    Moment dat je excel opent en een nieuw bestand maakt of een ander bestand opent, en je gaat dat bestand via het standaard menu van excel gaat 'opslaan als', dan krijg je het explorer menu van waar je wilt opslaan, onder welke naam en wat voor bestandstype, hoe kan ik die opgegeven bestandsnaam oproepen ?

  4. #4
    Senior Member
    Geregistreerd
    31 maart 2017
    In onderstaande afbeelding zou ik dus graag willen weten hoe ik de 'Nieuwe Filename' en het type bestand '(*.xlsm)' zou kunnen aanroepen onder het Workbook_BeforeSave voorbeeld in #3

    NewSaveName ='Nieuwe Filename' & ".xlsm"

    Klik op afbeelding voor grotere versie

Naam:  VbSaveAs.jpg
Bekeken: 13
Grootte:  55,1 KB

  5. #5
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Over welke database heb je het? Wat wil je controleren? Erg onduidelijk allemaal.

    Misschien zoek je zoiets? https://docs.microsoft.com/en-us/off...ion.filedialog
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  6. #6
    Senior Member
    Geregistreerd
    31 maart 2017
    Zie onderstaande foto:

    Welke database ik moet controleren, dat maakt denk ik even weinig uit, dat staat allemaal in een access bestand op de server en dat weet ik wel te benaderen en te controleren. Als ik in onderstaand voorbeeld punt 3, 4, en 5 weet te bepalen dan kom ik er wel weer uit.
    Ik ga het opnieuw proberen uit te leggen.
    In de excel bestand die wij gebruiken staat het lint niet verborgen en kan de gebruiker in het foto voorbeeld bij 1. op bestand drukken en bij 2. opslaan als. Ik zou alleen willen begrijpen hoe ik onder Workbook_BeforeSave de data van 3, 4, en 5 kan defineren zodat ik iets kan maken als onderstaand:

    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI = True Then
         ''( in foto voorbeeld )
         3 = "C:\Users\Desktop\"
         4 = "Nieuwe bestandsnaam"
         5 = ".xlsm"
         SavePath = 3
         NewSaveName = 4 & 5
         Check_Db  NewSaveName ''  <==== Check_Db is een macro waarmee ik de access database op de server benader en de zoekroutine in laat lopen
         if Fnd_db = true then 
             msgbox "De opgegeven bestandsnaam bestaat al in de database, graag andere naam kiezen"
             ''Niet opslaan is dan dus de bedoeling
             exit sub
         end if
    end if
    end sub
    Klik op afbeelding voor grotere versie

Naam:  VbSaveAs.jpg
Bekeken: 17
Grootte:  92,0 KB

  7. #7
    Giga Honourable Senior Member
    Geregistreerd
    2 maart 2013
    Het is nog steeds niet duidelijk. Als je een unieke naam wil hebben dan gebruik je format(now,"yyyymmdd hhmmss") in de bestandsnaam.
    Je kan een paard naar het water leiden, maar je kan het niet dwingen te drinken.

  8. #8
    Senior Member
    Geregistreerd
    31 maart 2017
    Ik zou b.v kunnen maken:

    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI = True Then
    MsgBox "Deze manier van opslaan is uitgeschakeld, graag 'opslaan als' via het menu van werkblad 1", vbCritical
    Cancel = True
    end if
    en dan op werkblad 1 een knop met onderstaande code en laten zoeken in mijn database:
    Code:
    Sub Opslaan_Als_Op_Werkblad1()
    NamePath = Application.GetSaveAsFilename(filefilter:="Excel-werkmap met macro's(*.xlsm), *.xlsm")
    ''En dan kan ik in de database laten zoeken op bestandsnaam, dit heb ik dan gedefineerd alles wordt namelijk op een vaste locatie opgeslagen
    Check_Db NamePath 
    ''en de rest van de macro
    end sub
    maar dat vind ik een omweg, ik hoopte: dat als de gebruiker het bestand opslaat via bestand\opslaan als ik ook die gedefineerde naam kon gebruiken

  9. #9
    Dat kan niet zonder eerst het bestand te laten opslaan, want die naam is pas bekend NADAT de gebruiker heeft opgeslagen, maar dan is de code in _BeforeSave al uitgewerkt. Wat wel kan:

    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI = True Then
    Application.Ontime now(), "AfterSave"
    end if
    En dan in een normale module:
    Code:
    Sub AfterSave()
    Check_Db ThisWorkbook.FullName
    End Sub
    Nadeel is dat je bestand dan al is opgeslagen en je dus geen controle hebt over naam en lokatie.
    Groetjes,

    Jan Karel Pieterse
    Excel MVP jkp-ads.com

  10. #10
    Senior Member
    Geregistreerd
    31 maart 2017
    @jkpieterse, Bedankt voor uw reactie. Ik weet denk ik wat mij nu te doen staat.
    @VenA ook nog bedankt voor uw reacties en het proberen te begrijpen van mijn probleem

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren