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

Functie in ThisWorkBook maar 1x gebruiken

Status
Niet open voor verdere reacties.

vrouw

Terugkerende gebruiker
Lid geworden
27 mrt 2010
Berichten
1.554
Ik gebruik onderstaande code in ThisWorkBook van een bestand.
Dat bestand krijg ik dagelijks per mail en word daardoor bij het openen gelijk opgeslagen op de benoemde lokatie.
Als het op de opgeslagen lokatie staat word het weer als een bron bestand gebruikt door een ander doel.
Echter... doordat het daarbij weer word geopend word het ook weer steeds de Private Sub Workbook_Open() routine aangeroepen.

Is er een methode dat de tekst(routine) uit ThisWorkBook word verwijderd als dat bestand word opgeslagen?

Code:
Private Sub Workbook_Open()

      
        MyFileName = "C:\Temp\posten & voorraadbestand.xls"
    If Len(Dir(MyFileName)) Then
        SetAttr MyFileName, vbNormal
        Kill MyFileName
    End If
    ActiveWorkbook.SaveCopyAs MyFileName
    SetAttr MyFileName, vbReadOnly
        
        
End Sub
 
Ja opslaan als *.xlsx, tenminste indien er geen andere code aanwezig is in het bestand die wel nog nodig is.
 
Ja opslaan als *.xlsx, tenminste indien er geen andere code aanwezig is in het bestand die wel nog nodig is.

Als ik het laat opslaan ls .xlsx en het bestand daarna open krijg ik de onderstaande foutmelding.

fout.png
 
In welke versie gebeurt een en ander.
Gewoon opslaan als Excel-werkmap is voldoende.
 
Heb je bij het opslaan,naast de extensie, ook het juiste bestandstype (51 of xlOpenXMLWorkbook) opgegeven?
 
In welke versie gebeurt een en ander.
Gewoon opslaan als Excel-werkmap is voldoende.

Ik gebruik office 2007

Als ik het bestand laat opslaan dmv de hierboven routine in ThisWorkBook kan ik het niet openen. dan komt de foutmelding.
Als ik het bestand handmatig opsla als een .xlsx bestand kan ik het wel openen.

Is er iets niet juist in de routine in ThisWorkBook?
 
*.xls en *.xlsx is niet gelijk dus zul je dat moeten opvangen.
 
*.xls en *.xlsx is niet gelijk dus zul je dat moeten opvangen.

Ik vrees dat we elkaar niet begrijpen.

Als ik het bestand laat opslaan als .xlsx dmv de hierboven routine in ThisWorkBook kan ik het niet openen. dan komt de foutmelding.
Als ik het bestand handmatig opsla als een .xlsx bestand kan ik het wel openen.

Is er iets niet juist in de routine in ThisWorkBook?
 
Post dan eens de routine die het doet foutlopen.
 
Probeer het eens zo:

Code:
Private Sub Workbook_Open()
    MyFileName = "C:\Temp\posten & voorraadbestand.xlsx"
    If Len(Dir(MyFileName)) Then
        SetAttr MyFileName, vbNormal
        Kill MyFileName
    End If
    
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs MyFileName, FileFormat:=51
    Application.DisplayAlerts = True
    SetAttr MyFileName, vbReadOnly
End Sub
 
Laatst bewerkt:
Probeer het eens zo:

Code:
Private Sub Workbook_Open()
    MyFileName = "C:\Temp\posten & voorraadbestand.xlsx"
    If Len(Dir(MyFileName)) Then
        SetAttr MyFileName, vbNormal
        Kill MyFileName
    End If
    
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs MyFileName, FileFormat:=52
    Application.DisplayAlerts = True
    SetAttr MyFileName, vbReadOnly
End Sub

Thanks voor het meedenken maar ik krijg een foutmelding op de regel:

Code:
ActiveWorkbook.SaveAs MyFileName, FileFormat:=52
 
Dan is het wel zo handig om ook even de fout erbij te vermelden.
 
Oeps!
Die 52 moet 51 zijn ;)
 
FileFormat moet volgens mij 51 zijn i.p.v. 52
 
Aha dat gaat beter maar het bestand word niet als een Copy weggeschreven.

Als ik
ActiveWorkbook.SaveAs MyFileName, FileFormat:=51
aanpas naar
ActiveWorkbook.SaveCopyAs MyFileName, FileFormat:=51

fout3.png
 
Die laatste zal inderdaad niet werken. Zoals ik het voorstelde wordt het bestand opgeslagen als .xlsx bestand.
Het nadeel is dat je dan inderdaad verder gaat in DAT bestand in plaats van het origineel geopende bestand.
 
Helemaal top, dan moet ie maar zo.

Misschien nog een mssbox er achteraan om bestand te sluiten zou wel mooi zijn.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan