Condividi:        

aprire altro file xlsm in stessa cartella

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

aprire altro file xlsm in stessa cartella

Postdi raimea » 06/12/20 10:45

ciao
tramite la macro sotto riportata >> apricalcolatrice_mia

apro un altro file excel >> calcolatrice_V2_1.xlsm
a condizione che questo si trovi nella stessa cartella
del file su cui sto operando .

SE il file e' gia aperto un msg box mi avvisa.
fin qui tutto ok , la macro funziona bene.

nel caso il file calcolatrice... NON e' nella stessa caertella
mi va ovviamente e giustamente in errore.

vorrrei aggiungere un mesg box che mi indica:
il file non e' disponibile non presente

-------------------------------------
la macro attuale:
Codice: Seleziona tutto
Option Compare Text
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

Sub apricalcolatrice_mia()
Dim nomeFile As String

'-------------------------------------------
' per funzionare questa macro necessita
' anche della parte sopra
'   ---> Private Function FileAperto(pathNomeFile As String) As Boolean ecc...
'-------------------------------------------

percorso = Application.ActiveWorkbook.Path
nfile = "\" & "calcolatrice_V2_1.xlsm"

nomeFile = percorso & nfile
    If FileAperto(nomeFile) = True Then
    MsgBox "File già aperto !"
    Else
    Application.Workbooks.Open percorso & nfile
    End If
End Sub






vi ringrazio
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: aprire altro file xlsm in stessa cartella

Postdi Anthony47 » 06/12/20 11:32

Sostituisci la tua Private Function FileAperto con questo codice:
Codice: Seleziona tutto
Function FileStatus(filename As String) As Variant
'Check file status; codice di ritorno:
'0=file libero, 70=file occupato, 53=file non esiste
'76=path non esiste
'altri errori: da indagare
'
    Dim filenum As Integer, errnum As Integer
'
    On Error Resume Next   ' Turn error checking off.
    filenum = FreeFile()   ' Get a free file number.
    ' Attempt to open the file and lock it.
    Open filename For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.
FileStatus = errnum
End Function


Poi per usarla nella tua macro:
Codice: Seleziona tutto
Dim FStat As Long
'...
'...
'...
FStat = FileStatus(NomeFile)

In FStat avrai 0 se il file e' disponibile per essere usato; 70 se il file e' gia' in uso; 53 o altre risposte se il file non e' stato trovato.

So che non avrai difficolta' a gestire la casistica nella tua macro

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: aprire altro file xlsm in stessa cartella

Postdi raimea » 06/12/20 12:16

ciao :oops: :roll:

ho sostituito la private function

poi in fondo alla mia macro ho aggiunto >> FStat = FileStatus(nomeFile)
ma si blocca :

in giallo evidenzia il nome >> Sub apricalcolatrice_mia()
ed evidenzia qui: If FileAperto(nomeFile) = True Then

Immagine

tutta la function e macro:

Codice: Seleziona tutto
Option Compare Text
Function FileStatus(filename As String) As Variant
'Check file status; codice di ritorno:
'0=file libero, 70=file occupato, 53=file non esiste
'76=path non esiste
'altri errori: da indagare
'
    Dim filenum As Integer, errnum As Integer
'
    On Error Resume Next   ' Turn error checking off.
    filenum = FreeFile()   ' Get a free file number.
    ' Attempt to open the file and lock it.
    Open filename For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.
FileStatus = errnum
End Function


Sub apricalcolatrice_mia()
Dim nomeFile As String

'-------------------------------------------
' per funzionare questa macro necessita
' anche della parte sopra
'   ---> Private Function FileAperto(pathNomeFile As String) As Boolean ecc...
'-------------------------------------------

percorso = Application.ActiveWorkbook.Path
nfile = "\" & "calcolatrice_V2_1.xlsm"

nomeFile = percorso & nfile
    If FileAperto(nomeFile) = True Then
    MsgBox "File già aperto !"
    Else
    Application.Workbooks.Open percorso & nfile
    End If
FStat = FileStatus(nomeFile)

End Sub
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: aprire altro file xlsm in stessa cartella

Postdi Anthony47 » 06/12/20 12:26

Fermati e prendi il caffè :D
La FileStatus deve essere usata in testa per sondare lo stato del file che cerchi. Tipo:
Codice: Seleziona tutto
Sub apricalcolatrice_mia()
Dim nomeFile As String

'-------------------------------------------
' per funzionare questa macro necessita
' anche della parte sopra
'   ---> Function FileStatus
'-------------------------------------------

Dim FStat As Long

percorso = Application.ActiveWorkbook.Path
nfile = "\" & "calcolatrice_V2_1.xlsm"

nomeFile = percorso & nfile
FStat = FileStatus(nomeFile)
If FStat = 70 Then
    MsgBox ("File attualmente in uso")
    Exit Sub
ElseIf FStat <> 0 Then
    MsgBox ("File non trovato")
    Exit Sub
End If

'File disponibile, lo apro
 Application.Workbooks.Open percorso & nfile

End Sub


Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: aprire altro file xlsm in stessa cartella

Postdi raimea » 06/12/20 14:00

e' siiiii :D
dopo il caffe' tutto un altra storia ! :P

e' tutto ok
grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "aprire altro file xlsm in stessa cartella":


Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti

cron