|
| slet en fil og opret en ny med samme navn Fra : Thong Tri Nguyen |
Dato : 12-06-02 18:26 |
|
Hej Grp
Jeg har lavet følgende sub som i enkelte tilfælde giver
'Path/File access error'
Denne sub oprette en ny fil, hvis der findes en i forvejen skal den slettes
først.
FilePath, FileName og FileContent er alle ok !
------------------------------
Public Sub SaveToDisk(ByVal FilePath As String)
Dim i As Long
Dim FileNumber As Integer
If FilePath = "" Or FileName = "" Then Exit Sub
If Mid(FilePath, Len(FilePath)) <> "\" Then FilePath = FilePath & "\"
On Error Resume Next
Kill FilePath & FileName
On Error GoTo 0
FileNumber = FreeFile
Open FilePath & FileName For Binary Access Write Lock Read Write As
#FileNumber
For i = 0 To UBound(FileContent) - 1
Put #FileNumber, , FileContent(i)
Next
Close #FileNumber
End Sub
-------------------------------------
Med venlig hilsen
Thong
| |
Bjarke Walling Peter~ (12-06-2002)
| Kommentar Fra : Bjarke Walling Peter~ |
Dato : 12-06-02 19:23 |
|
Thong Tri Nguyen skrev:
> Hej Grp
>
> Jeg har lavet følgende sub som i enkelte tilfælde giver
> 'Path/File access error'
>
> Denne sub oprette en ny fil, hvis der findes en i forvejen skal den
slettes
> først.
> FilePath, FileName og FileContent er alle ok !
Du kan bruge følgende subrutine:
Private Sub DeleteFile(ByVal Filename As String)
On Error Resume Next
If Dir(Filename, vbNormal) <> "" Or Dir(Filename, vbHidden) <> "" Then
Kill Filename
End If
Err.Clear
End Sub
Evt. kan man også blot gøre følgende:
On Error Resume Next ' Gør at der ikke kommer fejl
Kill Filename ' Sletter filen - hvis den ikke findes => fejl (afbryder ikke
programmet)
On Error Goto 0 ' Fjerner evt. fejl fra hukommelsen og viser nu
efterfølgende fejl igen
.... men denne metode er dog ikke god skik.
I øvrigt skal man (for at være helt sikker på at filen kan skrives) også
tjekke om der eksisterer en mappe med samme navn som filen (en fil og mappe
i samme mappe kan ikke hedde det samme). Det kan gøres ved:
If Dir(Filename, vbNormal Or vbDirectory) <> "" Or Dir(Filename, vbHidden Or
vbDirectory) <> "" Then
' Enten en fil eller mappe ved navnet 'Filename' eksisterer
End If
Du bør først slette filen og efterfølgende tjekke om der eksisterer en
fil/mappe med det navn - hvis der gør det bliver du næsten nød til blot at
afslutte funktionen med en eller anden fejlkode. Det kan nemlig være rimelig
bøvlet at slette en mappe. Det kunne jo også være at filen ikke var blevet
slettet, hvis nu det kører på et NT-system og den aktuelle bruger ikke havde
adgang til at slette lige den fil.
Håber du kunne bruge det til noget.
Mvh. Bjarke
| |
Harald Staff (13-06-2002)
| Kommentar Fra : Harald Staff |
Dato : 13-06-02 18:57 |
|
"Thong Tri Nguyen" <thong@kampsax.dtu.dk> skrev i melding
news:ae8077$8gt$1@eising.k-net.dk...
> Hej Grp
>
> Jeg har lavet følgende sub som i enkelte tilfælde giver
> 'Path/File access error'
>
> Denne sub oprette en ny fil, hvis der findes en i forvejen skal den
slettes
> først.
> FilePath, FileName og FileContent er alle ok !
Hei Thong
Undres på om du ikke har overproblematisert før du testet enklest mulige.
Denne oppretter/skriver, eventuelt overskriver om filen finnes:
Sub test()
Open "C:\temp\test.txt" For Output As #1
Print #1, Now
Close #1
End Sub
Du for problemer kun om path/folder ikke finnes eller om du ikke har
skriveprivilegier til filen.
HTH. Beste hilsen Harald
| |
|
|