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

schrijven naar alleen lezen bestand

Status
Niet open voor verdere reacties.

wim1985

Gebruiker
Lid geworden
1 aug 2008
Berichten
94
Ik heb een bestand genaamd planning. Ik schrijf vanuit een ander bestand werkorders via een macro data naar de plannig. Gaat allemaal prima, maar in de praktijk is het bestand op een andere computer al geopend en als ik dus probeer te schrijven dan doet de macro dat niet. Is er een oplossing voor? Ik heb de macro even toegevoegd.

Gr Wim

ps ik weet dat ik de code nog opschonen moet op de overbodige codes.

Code:
Sub nacalculatiemaken()

Application.CutCopyMode = False
Range("J1").Select
Selection.Copy
Range("K1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("K1").Select
Application.CutCopyMode = False

Sheets("Materiaal").Select

Dim sBestandsnaam As String

Application.ScreenUpdating = False
Application.DisplayAlerts = False


With ActiveSheet
sBestandsnaam = .Range("P1").Value
.Copy
End With

With ActiveWorkbook
.SaveAs "\\Dirkjan\shareddocs\urenregistratiesysteem\nacalculaties\" & sBestandsnaam
.Close
End With


    With Workbooks
        .Open Filename:="\\DIRKJAN\SharedDocs\Urenregistratiesysteem\planning.xls"
    End With
Windows("werkorders.xls").Activate
    Sheets("werkorder").Select
    Range("T4").Copy
    Range("F7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("printblad").Select
    Range("L1").Select
    Selection.Copy
    Range("O2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("L1").Select
    Application.CutCopyMode = False
    Sheets("werkorder").Select
    Range("F7").Select
    Selection.Copy
    Sheets("printblad").Select
    Range("T2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("werkorder").Select
    Range("F7").Select
    Application.CutCopyMode = False
    Sheets("werkorder").Select
    Range("C9").Select
    Selection.Copy
    Sheets("printblad").Select
    Range("R2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("werkorder").Select
    Range("C9").Select
    Application.CutCopyMode = False
    Sheets("werkorder").Select
    Range("C7").Select
    Selection.Copy
    Sheets("printblad").Select
    Range("P2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("werkorder").Select
    Range("C7").Select
    Application.CutCopyMode = False
    Sheets("werkorder").Select
    Range("C23").Select
    Selection.Copy
    Sheets("printblad").Select
    Range("Q2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("werkorder").Select
    Range("C23").Select
    Application.CutCopyMode = False
    Sheets("printblad").Select
    Range("K8").Select
    Selection.Copy
    Range("S2").Select
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Range("K8").Select
    Application.CutCopyMode = False
    
Windows("planning.xls").Activate
    Range("B4:I5000").Select
    Selection.Cut
    Range("B5").Select
    ActiveSheet.Paste
Windows("werkorders.xls").Activate
    Sheets("printblad").Select
    [O1].Value = [O2].Value
    [P1].Value = [P2].Value
    [Q1].Value = [Q2].Value
    [R1].Value = [R2].Value
    [S1].Value = [S2].Value
    [T1].Value = [T2].Value
    Range("O1:V1").Select
    Selection.Copy
Windows("planning.xls").Activate
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    Range("B4:I5000").Select
    Selection.Sort Key1:=Range("I4"), Order1:=xlDescending, Key2:=Range("G4") _
        , Order2:=xlAscending, Key3:=Range("C4"), Order3:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
        xlSortNormal
    Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close

Application.ScreenUpdating = True
Application.DisplayAlerts = True

    Sheets("Werkorder").Select
    Range("N1").Copy
    Range("C11").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Range("A1").ClearContents

End Sub
 
Beste Wim1985

Als je het bestand opslaat, zorg er dan voor dat je alleen kunt openen met een wachtwoord. Iemand die het wachtwoord niet heeft, kan alleen een kopietje openen zodat jij ten allen tijde wijzigingen kunt aanbrengen.

Moeten meerdere mensen tegelijkertijd wijzigingen doorkunnen brengen, kies dan voor het bestand Delen. Maar ik ben hier geen voorstander van als mensen op hetzelfde tabblad wijzigingen moeten kunnen doorbrengen.

Richard
 
Beste Richard,

Bij bestand delen, deel je dan alleen dat bestand of alle excel bestanden op deze computer? Als dan beide het zelfde tabblad geopend hebben kun je dan ook via een macro alleen de gewijzigde velden opslaan? Kun je via een macro ook eerst data bijwerken ( gelijk maken aan het hoofdbestand) ? Dan zou je eerst een macro kunnen laten draaien die het bestand op je beeldscherm gelijk maakt aan het orginele bestand en dan wijzigingen uitvoeren en wederom opslaan.

Gr Wim
 
Hoi Wim,

Een Excelbestand is niet bedoeld om door meerdere gebruikers tegelijkertijd te bewerken. Vandaar ook dat ik geen voorstander ben van delen. Samen met een collega deel ik een bestand, en we bewerken alleen ons eigen tabblad. Dan werkt het prima.
Wat je met VBA allemaal kunt opslaan weet ik niet, maar uit ervaring weet ik wel dat je tegen conflicten aanloopt als jij cel A1 bewerkt en je collega ook. Excel vraagt dan welke bewerking utigevoerd en opgeslagen moet worden, en dat heeft weer gevolgen voor andere berekeningen, ook die berekeningen van je collega waarvoor geen conflicten bestaan.

Dus, mijn advies is: Sla het bestand op met een wachtwoord dat jij via VBA gebruikt. Anderen openen dan alleen een kopietje van het bestand.
Een andere optie is dat iedereen werkt met een eigen bestand, en dat daarnaar gelinkt wordt vanuit 'jouw' bestand.
Via een topic hier kun je achterhalen hoe je via VBA iedere minuut een bestand opslaat en elders automatisch linken bijwerkt zodat 'jouw' bestand altijd actueel is.

Succes,

Richard
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan