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

Bestand kopiëren en besandsnaam vlgs celnaam

Status
Niet open voor verdere reacties.

Albatros

Gebruiker
Lid geworden
4 nov 2001
Berichten
388
hoi,

Ik wil een invul bestand kopiëren via een macroknop. Vervolgens de macro knop verwijderen in het nieuwe bestand. Vervolgens het nieuwe bestand opslaan vlgs de naam in cel "H2", en via Application.Dialogs(xlDialogSaveAs).Show, dit bestand op de juiste plaats zetten.
Vervolgens het invulbestand sluiten.

e.e.a is lukt mij wel, maar ik krijg de macroknop niet verwijderd (waar kan ik de naam hiervan vinden?), en de nieuwe bestandsnaam krijg ik niet in de dialoogvenster, om op te slaan.

Code:
Sub SavePage01()
    Dim sText  As String
    ActiveSheet.Copy
(Hier krijg ik de naam van de knop niet te pakken)
   ' ActiveSheet.Shapes("Button 2").Select
   ' Selection.Delete

    
    sText = ActiveSheet.Range("H2").Value & ".xlsx"
(Hier moet de bestandsnaam van cel "H2" komen)
    Application.Dialogs(xlDialogSaveAs).Show
    ActiveWorkbook.SaveAs sText

    Windows("InvulForm.xlsm").Activate
    Range("A4").Select

    ActiveWindow.Close

End Sub

Iemand een idee?

AlbatrosBekijk bijlage InvulForm.xlsm
 
Klik in de Ontwikkelaars tab op Ontwerpmodus, dan zie je in het naamvak van Excel de naam van de button. Die kan je vervolgens als volgt verwijderen:
ActiveSheet.Shapes("knopnaam").Delete

Dan heb ik het over een ActiveX button, dus uit de onderste serie wanneer je een button toevoegt.
De waarde van H2 heb je in sText staan, inclusief de .xlsx. Die sText kan je dan in de Thisworkbook.Save gebruiken.
 
Laatst bewerkt:
Beste Edmoor,

Bedankt voor je reactie.

Met die knop gaat het nu wel lukken.
Het tweede gedeelte van jouw antwoord, kan ik helaas nog niets van thuisbrengen. Moet ik de module aanpassen, en zo ja hoe?

albatros
 
Dat gaat over het eerste gedeelte van je vraag en dit stukje in je code:
(Hier moet de bestandsnaam van cel "H2" komen)

Wat bedoel je daarmee?
De code heeft de inhoud van cel H2 al in de variabele sText gezet.
 
Edmoor,

Misschien kun je het bestand openen, en op de macroknop drukken, dan zie je waar het mis gaat Mogelijk kan ik het niet op de juiste manier verwoorden.

Albatros
 
De naam van het bestand heb je al en hoef je dus niet op te vragen. Dus dit heb je dan niet nodig:
Application.Dialogs(xlDialogSaveAs).Show

Of bedoel je dat niet?
 
Klopt, de bestandsnaam heb ik al. Maar nu wil ik deze vandaag onder de map 2014 plaatsen (als voorbeeld), en morgen onder de map 2015. Vandaar mijn wens om een dialoogvenster te openen, zoals "bestand opslaan als .... met de naam van cel H2 zichtbaar, en ik hierin de keuze heb, om in de mappenstructuur te bladeren, om het bestand onder de juiste map op te slaan.

bedankt voor je geduld.

Albatros
 
Geen probleem :)
Je hebt dus alleen de naam van een folder nog nodig.
Die kan je laten kiezen met de folder dialog:
Foldernaam = Application.FileDialog(msoFileDialogFolderPicker)
 
De vele tips krijg ik helaas niet gestroomlijnd
Zoals ik het zie zou dit moeten werken, maar helaas.

Code:
Sub SavePage02()
    Dim sText  As String
    ActiveSheet.Copy

    sText = ActiveSheet.Range("H2").Value & ".xlsx"
    ActiveWorkbook.SaveAs sText
    Application.FileDialog (msoFileDialogFolderPicker)
    Windows("InvulForm.xlsm").Activate
    Range("A4").Select
 
    ActiveWindow.Close
 
End Sub

Albatros
 
Je gebruikt het ook niet op de juiste wijze. Daar had ik wellicht wat duidelijker in moeten zijn. Probeer het zo maar eens:
Code:
Sub SavePage02()
    Dim sFolder As String
    
    If Application.FileDialog(msoFileDialogFolderPicker).Show <> 0 Then
        sFolder = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
    Else
        MsgBox "Er is geen folder gekozen"
        Exit Sub
    End If

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs sFolder & "\" & ActiveSheet.Range("H2").Value & ".xlsx"
    
    Windows("InvulForm.xlsm").Activate
    Range("A4").Select
 
   ActiveWindow.Close
End Sub
 
Laatst bewerkt:
Beste Edmoor,

Dit gaat hem worden! :thumb:

Laatste vraag:
Kun je er nog een regel aan toevoegen, dat het dialoogvensters opent in c:\info\2015

Alvast bedankt

Albatros
 
Laatst bewerkt:
Dat kan, maar daarvoor moet het object gemanipuleerd en dus eerst aangemaakt worden. Dat ziet er dan weer heel anders uit dan de vorige code ;)

Probeer deze maar eens:
Code:
Sub SavePage02()
    Dim FD As Object
    
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)
    
    With FD
        .InitialFileName = "C:\info\2015"
        .AllowMultiSelect = False
        If not .Show Then
            MsgBox "Er is geen folder gekozen"
            Exit Sub
        End If
    End With

    ActiveSheet.Copy
    ActiveWorkbook.SaveAs FD.SelectedItems(1) & "\" & ActiveSheet.Range("H2").Value & ".xlsx"
    
    Windows("InvulForm.xlsm").Activate
    Range("A4").Select
 
   ActiveWindow.Close
End Sub

Als je de map C:\info\2015 standaard gekozen wilt hebben dan kan het zijn dat je de .InitialFileName moet vullen met C:\info waarna je dan tijdens het lopen van de macro de map 2015 selecteert. Je zal er vanzelf achter komen wat je het prettigst vind werken. Tevens kun je nu niet meer dan 1 folder selecteren door de .AllowMultiSelect = False.
 
Laatst bewerkt:
Beste Edmoor,

Oei, dat is idd iets meer dan één regel erbij. :o
En toch weet je in 10 minuten er een nieuwe draai aan te geven. :thumb:
Het ziet er gecompliceerd uit, maar het werkt!

Hartelijk dank voor de moeite, hier ga ik veel gemak uit halen!

prettige avond verder!

Albatros
 
Graag gedaan en ook een fijne avond verder :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan