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

Bestandsnaam geopend bestand wijzigen.

Status
Niet open voor verdere reacties.

mitch2k

Gebruiker
Lid geworden
3 aug 2007
Berichten
11
Ik wil iets doen, dat heel moeilijk blijkt te zijn...

Ik heb verschillende excel files die vanuit een ander bestand komen, bijvoorbeeld

kastelling 1-8-2008.xls
kastelling 2-8-2008.xls
kastelling 3-8-2008.xls
kastelling 4-8-2008.xls

enzoverder...

Nu wil ik in die bestanden telkens een knop zetten, zodanig als je daar op klikt, dat de bestandsnaam wordt gewijzigd naar OK kastelling 1-8-2008.xls. Dus het is de bedoeling dat als ik kastelling 3-8-2008.xls open, en in dat bestand op een knop druk, dat dat het bestand wordt gewijzigd naar OK kastelling 3-8-2008.xls.

Iemand een idee hoe ik dit het beste aanpak? Eerst de macro het bestand laten saven naar de nieuwe naam, en vervolgens het oude bestand verwijderen?

thanks!
 
Zoals jij zelf al zegt lijkt mij de enige oplossing.

Eerst Opslaan Als je nieuwe bestandsnaam, vervolgens het oude bestand verwijderen.

Succes, Cotje
 
ok, had al zo'n vermoeden. Hoe kan ik ik een macro de huidige bestandsnaam gebruiken? En hoe kan ik hier de OK bijkrijgen voor de nieuwe naam?

Ik heb nu dit:

Code:
Sub FileNamerename()                    
             
             
       
            Application.DisplayAlerts = False
            Dim Naam As String
            Dim Pad As String
            Dim Bestandsnaam As String
            Naamoud = ???
            Naamnieuw = ???
            Pad = "c:\kastelling\"
            Bestandsnaam = Pad & Naamnieuw
    
            Worksheets("Kastelling").Activate
            ActiveSheet.Copy
            ActiveWorkbook.SaveAs Pad & Naamnieuw
            MsgBox ("Kastelling opgeslagen")
            ActiveWorkbook.Close
           

End Sub

En hoe krijg ik nu naar bovenstaande het bestand verwijderd, de macro wordt immers vanuit het 'oude' bestand uitgevoerd, dus kan het moeilijk zichzelf verwijderen...

thanks!
 
Waarom maak je geen gebruik van een lus in je programma die de bestanden voor je zoekt, opent en opslaat onder een andere naam?

Om handmatig elk bestand apart te openen om vervolgens op te slaan en het oude bestand te verwijderen is onzinnig en uitermate tijdrovend.
Dan kan je net zo goed in Verkenner de bestandsnamen aanpassen. Dat is nóg sneller omdat je de bestanden niet hoeft te openen en de oude bestanden niet hoeft te verwijderen.

Met vriendelijke groet,


Roncancio
 
Yep, dat is waar, maar het idee achter de OK knop is dat de verantwoordelijke de kastelling nakijkt, en vervolgens zegt dat ze in orde is, en op de OK knop klikt, waardoor de bestandsnaam veranderd.
 
Met onderstaande code sla je het document op met OK voor de huidige naam. Een bestand verwijderen is vanuit VBA niet mogelijk voor zover ik weet.

Code:
Sub FileNamerename()

            Application.DisplayAlerts = False
            Dim Naam As String
            Dim Pad As String
            Dim Bestandsnaam As String
            Naamnieuw = "OK " & ActiveWorkbook.Name
            Pad = "c:\kastelling\"
            Bestandsnaam = Pad & Naamnieuw
    
            Worksheets("Kastelling").Activate
            ActiveWorkbook.SaveAs Bestandsnaam
            MsgBox ("Kastelling opgeslagen")
            ActiveWorkbook.Close
End Sub

Cotje
 
Beste Cotje, een bestand verwijderen is wel mogelijk via VBA nl met de instructie Kill.

Mvg

Rudi
 
Gecombineerd met het commando kill, met dank aan warme bakkertje, wordt de code dan:

Code:
            Application.DisplayAlerts = False
            Dim Naam As String
            Dim Pad As String
            Dim Bestandsnaam As String
            oudenaam = ActiveWorkbook.Name
            Naamnieuw = "OK " & oudenaam
            Pad = "c:\kastelling\"
            Bestandsnaam = Pad & Naamnieuw
    
            Worksheets("Kastelling").Activate
            ActiveWorkbook.SaveAs Bestandsnaam
            Kill (Pad & oudenaam)
            MsgBox ("Kastelling opgeslagen")
            ActiveWorkbook.Close

Cotje
 
Nog 1 vraag: ik zou willen vermijden dat de knop kan gebruikt worden in het nieuwe, 'nagekeken' (OK kastelling...) bestand.

Kan ik de knop eerst verwijderen voor het opnieuw wordt opgeslagen, of kan ik zo maken dat als de bestandsnaam OK bevat, er een boodschap tevoorschijn komt dat deze telling reeds is nagekeken, en vervolgens ActiveWorkbook.SaveAs niet wordt uitgevoerd?
 
Graag nog even de vraag op opgelost plaatsen aub. Bedankt.
 
Ik heb volgende nog toegevoegd, maar dat gaf niet direct effect:

Code:
Sub Hernoemen()
            oudenaam = ActiveWorkbook.Name
            Naamnieuw = "OK " & oudenaam
            
If oudenaam = Naamnieuw Then
            MsgBox "De dagkasstaat is reeds eerder goedgekeurd en opgeslagen!", vbOKOnly, "Error!"
            Exit Sub
            End If
 
Zet volgende code in ThisWorkbook alvorens de knop te gebruiken. Bij het openen v/h OK-bestand wordt de module met de code verwijdert waardoor de knop onbruikbaar wordt.
Het is weliswaar een lapmiddel maar de doelstelling wordt gehaald.
Code:
Private Sub Workbook_Open()
[COLOR="Red"]BooknameCode = Left(Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4), 2)
If Not BooknameCode = "OK" Then Exit Sub Else[/COLOR]
    Dim vbCom As Object, VBProj As Object
    Set vbCom = Application.VBE.ActiveVBProject.VBComponents
    vbCom.Remove VBComponent:=vbCom.Item("Module1")
        MsgBox "De dagkasstaat is reeds eerder goedgekeurd en opgeslagen!", vbInformation, "Error!"
    Set VBProj = ActiveWorkbook.VBProject   'Lege module aanmaken om
    Set VBComp = VBProj.VBComponents.Add(1) 'foutmeldingen bij volgende
    VBComp.Name = "Module1"                 'opening te voorkomen
        ActiveWorkbook.Save
End Sub

EDIT: dit werkt niet op deze manier want bij openen voor controle wordt de module ook gewist en kan niet meer gesaved worden als OK.
Moet nog bestandsnaamcontrole ingebouwd worden voordat de code mag uitgevoerd worden.

EDIT2: Nu zou het moeten werken

Mvg

Rudi
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan