PDA

View Full Version : [vba excel] verificare se un file è aperto o meno


john_revelator
04-07-2009, 11:25
Salve a tutti. Sono ancora qui a rompere. :fagiano:
Tramite word dovrò importare in excel dei dati ma prima devo verificare che il file di excel sia aperto o meno.

Il codice che ho scritto finora è questo. Anche se il file è chiuso mi dice che in realtà è già aperto. Potete darmi un consiglio? Grazie ancora.


Sub cicla()

On Error GoTo apriFile:

Dim strPath As String
Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

strPath = "C:\mio_path\2009-06-19.xls"

xlApp.Visible = True


If Dir(strPath) <> "" Then
'MsgBox "Il file esiste"

If Not Workbooks(strPath) Is Nothing Then
MsgBox "file aperto"
Else
MsgBox "file chiuso"
End If

Workbooks(strPath).Activate

Else
MsgBox "Il file non esiste"
Exit Sub
End If


apriFile:
If Err.Number = 9 Then
xlApp.Workbooks.Open FileName:=strPath
Resume
End If

End Sub

MarcoGG
04-07-2009, 12:38
Mmm, quanto codice...

Meglio così ?

Private Function FileAperto(pathNomeFile As String) As Boolean

On Error Resume Next
Open pathNomeFile For Binary Access Read Write Lock Read Write As #1
Close #1
If Err.Number <> 0 Then
FileAperto = True
Err.Clear
End If

End Function

Da usare così :

Dim nomeFile As String
nomeFile = "C:\Test.xls"

If FileAperto(nomeFile) = True Then MsgBox "File già aperto !"

;)

john_revelator
05-07-2009, 17:30
Grazie infinite per la "millantesima" volta. :)

MarcoGG
05-07-2009, 20:09
Grazie infinite per la "millantesima" volta. :)

Mi dovrai come minimo citare negli "special thanks"... :D

boomalek79
21-06-2020, 16:51
Mmm, quanto codice...

Meglio così ?

Private Function FileAperto(pathNomeFile As String) As Boolean

On Error Resume Next
Open pathNomeFile For Binary Access Read Write Lock Read Write As #1
Close #1
If Err.Number <> 0 Then
FileAperto = True
Err.Clear
End If

End Function

Da usare così :

Dim nomeFile As String
nomeFile = "C:\Test.xls"

If FileAperto(nomeFile) = True Then MsgBox "File già aperto !"

;)

Anche io uso questo codice... ho un solo problema..
se lo uso per verificare se è già aperto un file che è in SOLA LETTURA mi dice (giustamente visto che prova bloccarlo anche in scrittura e non ci riesce) che è aperto anche se non lo è...

c'è un modo di risolvere questa particolarità?

Grazie

misterx
24-06-2020, 11:40
per tagliare la testa al toro con una sporca: io proverei a rinominarlo aggiungendo semplicemente un carattere, se l'SO non si arrabbia, il file non è aperto e lo si riporta al nome precedente.

lorenzo001
01-07-2020, 15:46
Anche io uso questo codice... ho un solo problema..
se lo uso per verificare se è già aperto un file che è in SOLA LETTURA mi dice (giustamente visto che prova bloccarlo anche in scrittura e non ci riesce) che è aperto anche se non lo è...

c'è un modo di risolvere questa particolarità?

Grazie

Lo avevi scritto anche qui

http://forum.masterdrive.it/visual-basic-6-17/controllo-se-file-esiste-49560/index3.html#post377488

ma non hai creato nessun nuovo thread per avere la risposta ...