SaveAs

Status
Niet open voor verdere reacties.

Manuzzi

Gebruiker
Lid geworden
8 apr 2005
Berichten
64
Ik wil via een macro een geopend bestand opslaan onder een naam van een bestand dat reeds bestaat. Dat bestand moet worden overschreven.
Onderstaand de code. Dat gaat goed mits het betreffende bestand niet reeds geopend is.
Hoe kan ik de optredende fout ondervangen?

Sub mcrOpslaanAls()
'
ChDir "H:\Docent\Algemeen\TOA-roosterkopies"
ActiveWorkbook.SaveAs Filename:= _
"H:\Docent\Algemeen\TOA-roosterkopies\BertKopie.xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub


gr, Herman
 
Als een bestand geopend is kan je hem niet weggooien. Windows zelf kan dat niet dus dat zal jou ook niet lukken.
Eerst sluiten dus en daarna overschrijven of zoals ik het zou doen eerst verwijderen en daarna opnieuw aanmaken, dan onderdruk je de mogelijkheid dat je een vraag zou kunnen krijgen omdat het bestand al bestaat.

Andere mogelijkheid is het bestand copieren naar een andere naam en dan het origineel overschrijven.

De fout ondervangen kan ook door gebruik te maken van foutafhandeling:
Code:
' Bovenin je procedure:
On Error Goto ErrHandler

' je code hier
SaveAs ...

ErrHandler:
msgbox "Bestand reeds geopend door iemand anders"
Exit Sub

End Sub

Wat ook kan is het volgende. Het is erg lelijk en ik raad het niet aan maar het kan wel:

Code:
'Bovenin je procedure
On Error Goto ErrHandler

' je code hier
SaveAss ...

ErrHandler:
Resume

Exit Sub

End Sub

Nu blijft je code in een lus hangen zolang het bestand open blijft door iemand anders. Dit heb je niet van mij...

Weest gegroet,
Guus
 
Geplaatst door Guus2005


De fout ondervangen kan ook door gebruik te maken van foutafhandeling:
Code:
' Bovenin je procedure:
On Error Goto ErrHandler

' je code hier
SaveAs ...

ErrHandler:
msgbox "Bestand reeds geopend door iemand anders"
Exit Sub

End Sub

Guus bedankt,

Nu zijn er andere gebeurtenissen die een fout veroorzaken, zoals wanneer je het "Opslaan als" annuleert. In dat geval krijg ik hetzelfde bericht. Hoe kan ik dat ondervangen?

Herman
 
Iedere fout is voorzien van een eigen nummer. Dit nummer kan je gebruiken om je foutmelding foutafhankelijk te maken:
Code:
ErrHandler:

Select Case Err.Number
case 429
    msgbox "Fout 429"
    Resume
case 13
    msgbox "Fout 13 mag genegeerd worden"
    Resume Next
case else
    msgbox "Fout " & Err.Number
End Select
Resume 

End Sub

Weest gegroet,
Guus
 
Dat van die foutnummers had ik al uit gevonden, maar ik krijg in beide gevallen fout 1004. Dus zowel als ik het document op wil slaan onder de naam van het document dat reeds in gebruik is, als wanneer de "Opslaan als" wordt geannuleerd.
Terwijl de ErrorMessages wel verschillend zijn.
Maar met die standaard error messages wil ik de gebruikers niet confronteren.

gr, Herman
 
Je kan om het probleem heen werken door de filenaam te openen om te schrijven. Je krijgt dan een foutmeldinge die je afvangt en je geeft de gebruiker een foutmelding terug. Dus nog voordat je SaveAs doet.

Je doet het dan dus in twee stappen.
Ik hoop dat je hiermee beter geholpen bent.

Weest gegroet,
Guus
 
Ik heb voldoende informatie om het acceptabel ter laten werken.
Guus bedankt.

gr, Herman
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan