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

Vraag m.b.t. opslaan los werkblad

Status
Niet open voor verdere reacties.

wlsandman

Gebruiker
Lid geworden
22 sep 2006
Berichten
71
Goedemorgen,

Ik heb de volgende code:

Code:
Sub OpslaanOBW()
    
    If MsgBox("Wilt u dit bestand opslaan?", vbYesNo) = vbYes Then
    
    Workbooks("Invoer v1.0.xls").Sheets("Overrijlijst BW").Unprotect
    Sheets("Overrijlijst BW").Select
    Sheets("Overrijlijst BW").Copy
    
    ActiveWorkbook.SaveAs "S:\test\" & Format(Now(), "yyyy" & "mm" & "dd" & " - Overrijlijst Bleiswijk")
    ActiveWorkbook.Close
    Workbooks("Invoer v1.0.xls").Sheets("Overrijlijst BW").Protect

    End If

End Sub

Hiermee sla ik een werkblad van een bepaalde document op.

Automatisch wordt de datum ervoor gezet + een vaste naam. Dat de datum ervoor wordt gezet in de vorm: jaartal - maand - dag lukt wel. Maar de tekst wordt waarschijnlijk ook als datum gezien, waardoor het bestand een verkeerde bestandsnaam krijgt!

Dus in mijn geval zou de bestandsnaam moeten zijn:
20070105 - Overrijlijst Bleiswijk.xls

maar hij wordt:

20070105 - Overrijlij11t Blei116ijk.xls

Is het ook mogelijk om een soort msg box tevoorschijn te krijgen als het bestand is opgeslagen, dus als er op Yes wordt geklikt, dan wordt de werkblad opgeslang, dat er daarna een scherm tevoorschijn komt met:

Uw bestand is op 'locatie' opgeslagen!.

Dan had ik nog een vraag:

In het werkblad dat ik los wil opslaan staan uitkomsten van formules, als ik de werkblad opslaan dan verwijzen die formules naar het zng "hoofddocument" hier Invoer v1.0.xls.

Hoe krijg ik deze koppeling eruit, zodat ik alleen de uitkomsten te zien krijg en niet de forumules, zodat het nieuwe werkblad een opzich staand document wordt!

Met vriendelijke groet,

Jeffrey
 
wlsandman,

Probeer deze eens:
Code:
Sub OpslaanOBW()
    
    If MsgBox("Wilt u dit bestand opslaan?", vbYesNo) = vbYes Then
    
        Workbooks("Invoer v1.0.xls").Sheets("Overrijlijst BW").Unprotect

        Sheets("Overrijlijst BW").Sheets("Overrijlijst BW").Copy
    
        ActiveWorkbook.SaveAs "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk"
        ActiveWorkbook.Close

        Workbooks("Invoer v1.0.xls").Sheets("Overrijlijst BW").Protect

    End If

    MsgBox "Uw bestand is op " & "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk" & " opgeslagen!"

End Sub

Voor je laatste vraag verwijs ik je naar de functie:
Code:
Selection.[COLOR="Red"]PasteSpecial[/COLOR] Paste:=xlPasteValues, Operation:=xlNone

Weet niet precies welk werkblad je wilt opslaan. Wil je een werkblad opslaan vanuit een al geopene document? kom er niet geheel uit?

Groet,
Ferenc
 
Laatst bewerkt:
De code werkt perfect, waarvoor mijn dank.:thumb:

Wat ik bedoel met dat opslaan:

Ik heb 1 groot exceldocument: Invoer v1.0.xls. Daar voer ik mijn gegevens in op blad1 in. Op blad 2, 3 enz worden dan lijsten opgemaakt, dus gegevens worden (als ze aan een voorwaarde voldoen) in blad 2 of 3 gezet. De gegevens in blad 2 en 3 zijn dus uitkomsten van een formule (geen harde values zeg maar).

Als ik bijvoorbeeld blad 2 helemaal wil opslaan (dus de opmaak hetzelfde laten), dan lukt mij dat wel. Blad 2 wordt dan een nieuw excel document. In mijn voorbeeld: 20070105 - Overrijlijst Bleiswijk.xls.

Nu zijn de gegevens in dat nieuwe excel document uitkomsten van formules, dus geen harde gegevens. Als ik de gegevens in Invoer v1.0.xls wijzig, dan wijzigen ook de gegevens in 20070105 - Overrijlijst.xls.

In het nieuwe document (20070105 - Overrijlijst.xls. ) staan dan formules als:

=ALS(ALS(OF('[Invoer v1.0.xls]Invoer'!H9>0;'[Invoer v1.0.xls]Invoer'!I9>0);'[Invoer v1.0.xls]Invoer'!I9;"")=0;"";ALS(OF('[Invoer v1.0.xls]Invoer'!H9>0;'[Invoer v1.0.xls]Invoer'!I9>0);'[Invoer v1.0.xls]Invoer'!I9;""))I17>0);Invoer!N17;""))

Ik wil hier geen formule meer zien, maar gewoon de uitkomst.

Ik hoop dat jullie het snappen!

Mvg, Jeffrey
 
Zie hieronder eens wat ik je voor je geschreven heb.

Code:
Sub Opslaanalswaarden()
    Dim wb As Workbook
    On Error Resume Next
    If MsgBox("Wilt u dit bestand opslaan?", vbYesNo) = vbYes Then
        Set wb = Workbooks.Add
        With Workbooks("Invoer v1.0.xls").Sheets("Overrijlijst BW")
            .Unprotect
            .UsedRange.Copy
            wb.Sheets(1).Cells(1).PasteSpecial xlPasteValues
            wb.Sheets(1).Cells(1).Select
            Application.CutCopyMode = False
            On Error GoTo 0
            ActiveWorkbook.SaveAs "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk"
            ActiveWorkbook.Close
            .Protect
        End With
        MsgBox "Uw bestand is als " & "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk" & " opgeslagen!"
    End If
End Sub

Wigi
 
Laatst bewerkt:
Bedankt voor je hulp Wigi, maar ik ben bang dat ik ergens een fout heb gemaakt.

Ik heb mijn oorspronkelijke bestand flink aangepast en in de bijlage gezet.

Ik wil dus blad 2 (overrijlijst bw) kopieren, met dezelfde opmaak en inhoud (qua gegevens), naar een nieuw werkblad. Die opslaan, zonder ook maar enige verwijzing naar Invoer v2.0.!
 

Bijlagen

wlsandman,

Is handiger als je attachment in zip formaat aan hangt dan kunnen meerdere personen de file openen wat weer een grotere kans geeft dat er op je vraagt geantwoord wordt.

Bijdeze, als zip aangehangen.

Groet,
ferenc
 

Bijlagen

Bedankt voor je hulp Wigi, maar ik ben bang dat ik ergens een fout heb gemaakt.

Ik heb mijn oorspronkelijke bestand flink aangepast en in de bijlage gezet.

Ik wil dus blad 2 (overrijlijst bw) kopieren, met dezelfde opmaak en inhoud (qua gegevens), naar een nieuw werkblad. Die opslaan, zonder ook maar enige verwijzing naar Invoer v2.0.!

Dus in waarden kopiëren? Niet?
 
Dus in waarden kopiëren? Niet?

Ja, en met behoud van opmaak, kolombreedte e.d.

Dus het nieuwe document moet er precies uitzien als blad2 (overrijlijst BW) maar dan zonder enig verwijzing naar het oorspronkelijke document (blad 1 invoer2.0.xls).
 
Hier dan, heb nog tijd voor jou kunnen uittrekken, maar gemakkelijk was het niet...

Code:
Sub Opslaanalswaarden()
    Dim wb As Workbook, ws As Worksheet
    Application.ScreenUpdating = False
    On Error Resume Next
    If MsgBox("Wilt u dit bestand opslaan?", vbYesNo) = vbYes Then
        Set wb = Workbooks.Add
        With Workbooks("Invoer v2.0.xls").Sheets("Overrijlijst BW")
            .Unprotect
            .Copy Before:=wb.Sheets(1)
            Application.DisplayAlerts = False
            For Each ws In wb.Worksheets
                If ws.Index > 1 Then ws.Delete
            Next
            wb.Sheets(1).Cells.Copy
            wb.Sheets(1).Cells(1).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
            wb.Sheets(1).Cells(1).Select
            On Error GoTo 0
            wb.SaveAs "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk"
            wb.Close
            .Protect
        End With
        MsgBox "Uw bestand is als " & "S:\test" & Format(Now(), "yyyy" & "mm" & "dd") & " - Overrijlijst Bleiswijk" & " opgeslagen!"
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End If
End Sub

Wigi
 
Wow, het werkt perfect. Echt hartstikke bedankt voor je hulp!!!

Nu kan ik weer lekker verder prutsen :D
 
OK. Hou ook de Excel sectie op mijn site in de gaten. Nu is het nog maar 1 pagina, maar dat gaat veranderen.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan