Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Da VBA verificare che il file che si apre

Ultimo Aggiornamento: 22/03/2017 07:05
Post: 324
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
17/03/2017 19:20

Salve,

con il codice sottoriportato collegato ad bottone
mi permette di aprire il file excel
come faccio ad impedire di aprire file che si chimano in modo diverso ?


Sub Apri_Click()
MsgBox "ATTENZIONE !!!" + Chr(13) + Chr(10) + "Prima di aprire il file assicurati che sia rinominato in questo modo: " + Chr(13) + Chr(10) + "" + Chr(13) + Chr(10) + "---> IstituzionaleMensile"
Dim MyPercorso As String

MyPercorso = CurDir
ChDir (ThisWorkbook.Path)

fileDaAprire = Application.GetOpenFilename("Tutti i file (*.*), *.*")

If fileDaAprire <> False Then
MsgBox "Sto aprendo il file: " & fileDaAprire
Workbooks.Open Filename:=fileDaAprire
End If

Windows("IMA.xlsm").Activate
end sub
Excel 2007 - 2010
Post: 3.771
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
18/03/2017 08:28

Sub Apri_Click()
fname = "---> IstituzionaleMensile"
ChDir (ThisWorkbook.Path)
fileDaAprire = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If fileDaAprire <> False Then
  p = InStrRev(fileDaAprire, "\")
  ffile = Right(fileDaAprire, Len(fileDaAprire) - p)
  If ffile = fname Then
    MsgBox "Sto aprendo il file: " & fileDaAprire
    Workbooks.Open Filename:=fileDaAprire
  End If
End If
End Sub

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 325
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
18/03/2017 11:50

Ciao,
grazie per la celere risposta ho provato il codice ma non ottengo differenze, sbaglierò !!!

Comunque visto che ci siamo propongo un'alternativa

il file che devo aprire ogni mese si chiamano in questo modo

IstituzionaleMensile luglio 2016
IstituzionaleMensile agosto 2016
IstituzionaleMensile settembre 2016

quindi probabilmente posso evitare tutte queste difficolta
se in qualche modo riesco a far riconoscere il nome del file che apro
Excel 2007 - 2010
Post: 3.772
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
18/03/2017 12:07

Re:
Sub Apri_Click()
fname = "IstituzionaleMensile"
ChDir (ThisWorkbook.Path)
fileDaAprire = Application.GetOpenFilename("Tutti i file (*.*), *.*")
If fileDaAprire <> False Then
  If instr(fileDaAprire,fname) > 0 Then
    MsgBox "Sto aprendo il file: " & fileDaAprire
    Workbooks.Open Filename:=fileDaAprire
  End If
End If
End Sub




----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 326
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
18/03/2017 12:20

questo perche dopo il primo passaggio di aperture del nuovo file

devo importare i dati da questo nuovo ad uno di rifeirmento ed ho usato questo codice

Private Sub Importa_Click()

With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
End With

ActiveSheet.Activate
Cells.Select
Selection.Copy
Windows("IMA.xlsm").Activate
Sheets("Temp").Select
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False

Windows("IstituzionaleMensile.xls").Activate 'qui mi da errore perchè il nome del file ovviamente cmabia
ActiveWorkbook.Close SaveChanges:=False

Windows("IMA.xlsm").Activate
DiffData.Enabled = True

End Sub
Excel 2007 - 2010
Post: 3.773
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
18/03/2017 14:11

non ho capito se ti va bene l'ultima soluzione che ti ho proposto

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 327
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 06:14

Si l'ultimo tuo codice funziona egregiamente ma mi sono accorto che il mio problema è in realtà nel secondo passaggio quello di importare da questa cartella attiva, vedi codice sotto:

Private Sub Importa_Click()

With ThisWorkbook
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = "Temp"
End With

ActiveSheet.Activate
Cells.Select
Selection.Copy
Windows("IMA.xlsm").Activate
Sheets("Temp").Select
Cells.Select
ActiveSheet.Paste
Application.CutCopyMode = False

Windows("IstituzionaleMensile.xls").Activate
'QUI MI DA ERRORE PER LA CARELLA APPENA APERTA IN REALT HA NOMI SEMPRE DIVERSI ... COME FACCIO ?
ActiveWorkbook.Close SaveChanges:=False

Windows("IMA.xlsm").Activate
DiffData.Enabled = True

End Sub
Excel 2007 - 2010
Post: 3.774
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
19/03/2017 07:46

il nome esatto del file che hai aperto ce l'hai dalla prima sub, non capisco perché non lo usi

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 328
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 11:09

Si si in fatti poi ci sono arrivato e sto utilizzando
ActiveWorkbook.Name per cattura il nome della carella di lavoro

pero mi restituisce nome file.xls come faccio a poterlo riutilizzare
come nome per il foglio liminando .xls ?

infine un'altro cosa come faccio a far apparire un messaggio di avviso in caso si aprie un file che è stato gia aperto ?


Grazie 1000 per l'attenzione
Excel 2007 - 2010
Post: 329
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 11:15

per l'estensione ho trovato la soluzione, questa:

Label1.Caption = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)

giusto !!! sembra funzionare

Per l'altra soluzione del confronto ci sto lavorando ma un vostro aiuto sarebbe gradito

Grazie
Excel 2007 - 2010
Post: 3.776
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
19/03/2017 11:15

Re:
krashone, 19/03/2017 11.09:


pero mi restituisce nome file.xls come faccio a poterlo riutilizzare
come nome per il foglio liminando .xls ?


nomefile = "pippo.xls"
nome = left(nomefile, len(nomefile) -4)
msgbox nome


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 330
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 11:22

Ho cantato vittoria troppo presto
perche il nome del file che utilizzo "IstituzionaleMensile giugno 2016" è troppo lungo per rinominare un foglio

come lo accorcio ?
Excel 2007 - 2010
Post: 331
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 11:58

ho risolto cosi

noest = Left(ActiveWorkbook.Name, InStr(ActiveWorkbook.Name, ".") - 1)
IMA.fgname.Caption = Replace(noest, "IstituzionaleMensile", "IstMen")

va bene ?

Excel 2007 - 2010
Post: 3.777
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
19/03/2017 12:59

se funziona va bene

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 332
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
19/03/2017 17:52

GRAZIE
Excel 2007 - 2010
Post: 334
Registrato il: 29/09/2003
Città: ACCIANO
Età: 26
Utente Senior
2003/2007
OFFLINE
22/03/2017 06:06

Ancora sull'argomento

ho notato che se clicco sul bottone per aprire il file ma se poi non seleziono nullo e faccio annulla la routine non si arresta ma va avanti come se lo avesse aperto

cè un modo per intercettare ?

Grazie
Excel 2007 - 2010
Post: 3.781
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
22/03/2017 07:05

sicuramente c'è, ma se non mostri il codice che stai usando ....

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 14:44. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com