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

Button opslaan archief

Status
Niet open voor verdere reacties.

FrankyCamerier

Gebruiker
Lid geworden
20 mrt 2012
Berichten
22
Heb een exel bestand dat door meerdere wordt ingevuld.

Nu zou ik een button erop willen plaatsen ( Opslaan archief )

De bedoeling of werking van die button is telkens een copy op te slaan naar een map zonder de vorige te overschrijven en waarvan
erna niks meer in te kunnen wijzigen.

vb: copy opslaan naar -->

C:\Users\Naam\Documents\NaamMap

Maar kan iemand de juiste beschrijving tekst beschrijven wat ik in de microsoft Visual basic moet zetten.


mvg Franky
 
Met onderstaande code moet het lukken. Iedere kopie krijgt een volgnummer.

Code:
Sub Workbook_save()
Dim fso As Variant, fOld As Variant
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fOld = fso.GetFolder("C:\Users\Naam\Documents\NaamMap\")
    GetFiles = fOld.Files.Count

ActiveWorkbook.SaveCopyAs "C:\Users\Naam\Documents\NaamMap\" & ActiveWorkbook.Name & GetFiles + 1 & ".xls"

End Sub
 
Thx van je hulp.

Toch het werkte niet. Vermoed dat ik nog te weinig info gaf.
Heb dan ook verder gepuzzeld.

Dit werkt al een deel maar het overschrijft het vorige. Het is de bedoeling dat er telkens een copy word bij opgeslaan. Dus ben er nog niet.

Hier mijn formule -->

Private Sub CommandButton3_Click()
'
' Opslaan Archief Makro
'

'
ActiveWorkbook.SaveCopyAs "C:\Users\Naam\Documents\Map A\Map B\" & ActiveWorkbook.Name & GetFiles + 1 & ".xls"
End Sub
 
Code:
Sub Workbook_save()
Const SaveFolder = "C:\Users\Naam\Documents\Map A\Map B\"
Dim nNumber As Integer
    With CreateObject("Scripting.FileSystemObject")
        nNumber = .GetFolder(SaveFolder).Files.Count + 1
    End With
    ActiveWorkbook.SaveCopyAs SaveFolder & ActiveWorkbook.Name & nNumber & ".xls"
End Sub
 
Heb ondertussen dit staan


Private Sub CommandButton3_Click()
'
' Opslaan Archief Macro
' De macro is opgenomen op 21-03-2012 door Ontwerper.
'
'
Const SaveFolder = "C:\Users\Naam\Documents\Map A\Archief Ploeg\"
Dim nNumber As Integer
With CreateObject("Scripting.FileSystemObject")
nNumber = .GetFolder(SaveFolder).Files.Count + 1
End With
ActiveWorkbook.SaveCopyAs SaveFolder & ActiveWorkbook.Name & nNumber & ".xls"
End Sub



Denk dat ik nog iets over het hoofd heb gezien.
Want op deze regel krijg ik nog een foutmelding.
nNumber = .GetFolder(SaveFolder).Files.Count + 1

mvg franky
 
FrankyCamerier,

Je moet je code selecteren en dan boven in het menu op # klikken.
Komt de code netjes in een apart vak te staan.
 
Ga in je VBA-editor naar Extra >> Verwijzingen en vink Microsoft Scripting Runtime eens aan.
 
Heb nog een aansluitende vraag.

De makro die ik hier neerschrijf werkt.

Private Sub CommandButton3_Click()
'
' Opslaan Archief Macro
' De macro is opgenomen op 21-03-2012 door Ontwerper.
'
'
Const SaveFolder = "C:\Users\Naam\Documents\Map A\Archief Ploeg\"
Dim nNumber As Integer
With CreateObject("Scripting.FileSystemObject")
nNumber = .GetFolder(SaveFolder).Files.Count + 1
End With
ActiveWorkbook.SaveCopyAs SaveFolder & ActiveWorkbook.Name & nNumber & ".xls"
End Sub


De aansluitende vraag die ik wil stellen gaat over de verwijzing die ik in de makro rood gemarkeerd heb
Verwijst naar een map op de C schijf.
In de praktijk staat die map op een externe server.
De externe server staat op verschillende computers ingesteld.
Bij de ene pc staat dat onder --> schijf F:\.....
Bij de andere is dat bijvoorbeeld schijf --> H:\---
Hoe kan ik dit oplossen in mijn makro verwijzing.
Had eerst gedacht gewoon de letter van de schijf weglaten. Maar dat helpt niet.
Had ook gedacht dit op te lossen door een hyperlink in de makro . Maar weet niet of hoe dat kan.

mvg Franky
 
Probeer eens met onderstaande.
Code:
Private Sub CommandButton3_Click()
 '
 ' Opslaan Archief Macro
 ' De macro is opgenomen op 21-03-2012 door Ontwerper.
 '
 '
Dim nNumber As Integer, sFolder As String
sFolder = Environ("systemdrive") & "\Users\Naam\Documents\Map A\Archief Ploeg\"
With CreateObject("Scripting.FileSystemObject")
    nNumber = .GetFolder(sFolder).Files.Count + 1
End With
ActiveWorkbook.SaveCopyAs SaveFolder & ActiveWorkbook.Name & nNumber & ".xls"
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan