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

opslaan van bestand

Status
Niet open voor verdere reacties.
Ok. Die heb ik voor de test hier wel aangemaakt en staat ook in je originele code, vandaar. Dan moet je dus die map aanmaken of het pad in de code wijzigen.
 
Laatst bewerkt:
Het is en blijft natuurlijk jammer dat het bestandje niet hier staat Maar
Zoals je ziet heb ik .Range("J16").Select voorzien van een ' teken. Hierdoor wordt deze niet meer uitgevoerd.
is het werkblad beveiligd? 't is maar een gedachte. (een willekeurige cel ergens in de code selecteren is wat onhandig maar zal in mijn optiek geen foutmelding geven)
 
Het blad is inderdaad beveiligd, maar het handmatig selecteren van die cel op dat werkblad werkt wel goed en gaat ook goed vanuit VBA wanneer tabblad werkorder 1 het actieve blad is.

Er zal een logische verklaring voor zijn maar ik weet 'm zo even niet ;)
 
Laatst bewerkt:
Het pad wijzigen
hoe ziet dat er dan uit

het bestand moet eigenlijk de naam RekenstaatK24 op de C schijf gaan heten
als ik de map aanmaak Rekenstaat op de C schijf dan slaat hij die wel op als K24 in die map

PS de tijd wordt niet weergegeven in cel F2
 
Laatst bewerkt:
In dat geval was de regel die Warme bakkertje gebruikte wel goed en moet er dus dit staan:
ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & .Range("C5").Value & ".xlsm"

Het is m.i. alleen geen logische plek om een bestand op te slaan en daarnaast heb je er, afhankelijk van je Windows versie, ook rechten voor nodig om daar een bestand te mogen opslaan. Als je die rechten niet hebt gaat het alsnog mis.
 
Laatst bewerkt:
Oke
dit werkt nu alleen mis ik nog de tijd die in F2 moet komen als het opgeslagen wordt
 
In F2 van welk blad?
 
Programmeren luistert erg nauw. Dus, bedoel je dan echt F2 op elk werkblad of F2 op het actieve blad?
 
Laatst bewerkt:
Ok, dan moet je het dus zo doen:
Code:
Sub Opslaan()

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Range("F2") = Time
    With Sheets("werkorder 1")
        '.Range("J16").Select
        If .Range("C5").Value = vbNullString Then
            MsgBox ("Voor opslaan eerst Machine nummer invullen.")
            Application.Goto .Range("C5")
            GoTo haserror
        End If
        ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & .Range("C5").Value & ".xlsm"
    End With

haserror:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
 
was even zelf aan het stoeien
en heb nu volgende code gebruikt
Code:
Sub Opslaan()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     Range("F2").Select
     ActiveCell.FormulaR1C1 = Time
    With Sheets("werkorder 1")
        
        If .Range("C5").Value = vbNullString Then
            MsgBox ("Voor opslaan eerst Machine nummer invullen.")
            Application.Goto .Range("C5")
            GoTo haserror
        End If

        ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & .Range("C5").Value & ".xlsm"

    End With
    
haserror:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

nu werkt hij zoals ik het wilde
Bedankt voor je steun
als iemand interesse heeft in een voorbeeld bestand zal in die hier morgen plaatsen
het is nu voor mij bedtijd
Vroege dienst
 
Nu op het tabblad 'werkorder 1" alleen maar gekeken hoeft te worden of C5 gevuld is kan de code ook een stukje eenvoudiger:
Code:
Sub Opslaan()

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Range("F2") = Time
    If Sheets("werkorder 1").Range("C5").Value = vbNullString Then
        MsgBox ("Voor opslaan eerst Machine nummer invullen.")
        Application.Goto .Range("C5")
    Else
        ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & Sheets("werkorder 1").Range("C5").Value & ".xlsm"
    End If

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Het document dat je me stuurde heb ik verwijderd, zowel van schijf als uit m'n mail.
 
Laatst bewerkt:
Hallo VenA en Edmoor en Warme Bakkertje

Bij deze een voorbeeldbestand zoals ik al aan gaf om te plaatsen
voor het vernieuwen van het formulier heb ik de volgende code gebruikt (het pad en naam zijn fictief )
Code:
Sub Update()

'
' Update Macro
'' De macro is opgenomen op 3-11-2009 door Ger en Marly.
'Dim zeker As Variant
zeker = MsgBox("                    Nieuwe order starten?", vbYesNo, "                        bevestiging ")
If zeker = vbNo Then Exit Sub

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False


    ChDir "C:\Voorbeeld"
    Workbooks.Open Filename:="C:\Voorbeeld\Voorbeeld.xls"

    ThisWorkbook.Close
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
     



End Sub

en voor het opslaan onder andere naam
Code:
Sub Opslaan()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     Range("F2").Select
     ActiveCell.FormulaR1C1 = Time
      Range("J16").Select
    With Sheets("werkorder 1")
        
        If .Range("C5").Value = vbNullString Then
            MsgBox ("Voor opslaan eerst Machine nummer invullen.")
            Application.GoTo .Range("C5")
            GoTo haserror
        End If

        ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & .Range("C5").Value & ".xls"

    End With
    
haserror:
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

Groetjes Ger
 

Bijlagen

De code voor het opslaan kan eenvoudiger en netter, zoals ik heb aangegeven in #33.
De Update routine kan ook een stuk netter en korter als je dat wilt.
 
Hallo Edmoor
#33 heb ik uitgeprobeerd, maar krijg hier dan niet de tijd weergegeven wanneer het bestand wordt opgeslagen
telkens met opslaan de actuele tijd
de update kan messchien iets netter , geef even aan hoe

Groetjes Ger

ps deze ga ik dan morgen testen, want het is voor mij weer laat en moet morgen vroeg op

Groetjes ger
 
De tijd wordt weergegeven in F2 bij het opslaan maar omdat je ScreenUpdating hebt uitgezet zie je dat niet direct verschijnen. De Update zou zo voldoende moeten zijn:

Code:
Sub Update()
    If MsgBox("Nieuwe order starten?", vbYesNo, "bevestiging ") = vbNo Then Exit Sub
    Workbooks.Open Filename:="C:\Voorbeeld\Voorbeeld.xls"
    ThisWorkbook.Close    
End Sub
 
Die samengevoegde cellen zijn soms echt een pest.
Code:
Sub Opslaan()

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Range("F1") = Time
    With Sheets("werkorder 1")
        If .Range("C5").Value = vbNullString Then
            MsgBox ("Voor opslaan eerst Machine nummer invullen.")
            Application.Goto .Range("C5")
        Else
            ThisWorkbook.SaveAs "C:\" & "Rekenstaat" & .Range("C5").Value & ".xlsm"
        End If
    End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
 
Hoi Edmoor en Warme Bakkertje
zojuist de nieuwe code's ingevoerd, en ze werken goed
Bedankt

Groetjes Ger
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan