Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Mettere in primo piano un file excel rispetto ad un altro

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

Mettere in primo piano un file excel rispetto ad un altro

Postdi systemcrack » 11/11/22 15:58

Ciao ragazzi, ben ritrovati a tutti.. dopo mesi (forse anni) di assenza dal web, sono nuovamente tornato in ufficio, ritornando ad avere bisogno dei vostri preziosissimi insegnamenti.

Ho due file excel collegati tra loro con delle formule per un interscambio di dati.
Un file che chiameremo PRATICHE.xslx invia dati (in alcune celle) al secondo che chiameremo LOCALIZZATORE.xlsm e viceversa (per quanto riguarda altri campi).

Il primo file viene aperto dall'ufficio, il secondo dal magazzino per questo i due file non sono mai aperti sullo stesso pc.
Ciò genera un problema di comunicazione tra i due files che ho risolto facendo aprire una copia in sola lettura quando si apre uno dei due (reciclando quest'altro vostro aiuto passato).

Ora lanciando il file PRATICHE si apre una copia in sola lettura anche del file LOCALIZZATORE, ma quest'ultimo essendo lanciato dal primo comparirà/visualizzerà sopra a PRATICHE. C'è un modo per fare si che LOCALIZZATORE dopo essere stato aperto da PRATICHE vada in secondo piano o addirittura ridotto a icona?

Grazie in anticipo e buon week end!
Avatar utente
systemcrack
Utente Senior
 
Post: 168
Iscritto il: 27/07/17 09:40

Sponsor
 

Re: Mettere in primo piano un file excel rispetto ad un altr

Postdi Anthony47 » 11/11/22 16:38

Bentornato...

Qualcosa del tipo:
Codice: Seleziona tutto
'
Workbooks.Open "LOCALIZZATORE.xlsm" + opzioni
ThisWorkbook.Activate       'Se la macro e' contenuta in PRATICHE.xslx
'..
'..
End Sub

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 18601
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Mettere in primo piano un file excel rispetto ad un altr

Postdi systemcrack » 15/11/22 09:21

Ciao Anthony47 è davvero un piacere rileggerti! Mi sono accorto che venerdì ho scritto una castronata in quanto è esattamente l'inverso :roll: . Il file LOCALIZZATORE richiama il file PRATICHE quindi pratiche viene aperto in sola lettura.

Ora per fare un pò di ordine elenco la composizione dei due files:

LOCALIZZATORE (ThisWorkBook)
Codice: Seleziona tutto
Private Sub Workbook_Open()
Dim Ckwb As Workbook
'
FFName = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE SIDERURGICO.xlsx"                 '<<< Percorso e nome del file da aprire
mySplit = Split(FFName, "\", , vbTextCompare)
On Error Resume Next
    Set Ckwb = Workbooks(mySplit(UBound(mySplit)))
On Error GoTo 0
If Ckwb Is Nothing Then
    Workbooks.Open Filename:=FFName, ReadOnly:=True
End If
Call CloseOpen
End Sub


Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Call Macro2

FFName = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE SIDERURGICO.xlsx"                 '<<< Percorso e nome del file da aprire
mySplit = Split(FFName, "\", , vbTextCompare)
On Error Resume Next
    Workbooks(mySplit(UBound(mySplit))).Close False
    If myNext > Now Then Application.OnTime myNext, "CloseOpen", , False
On Error Resume Next

End Sub


LOCALIZZATORE (modulo)
Codice: Seleziona tutto
Sub Macro2()

nomecopia = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\copia sicurezza\salvataggi estremis\" & Hour(Now()) & "." & Minute(Now()) & " " & "-" & " " & Day(Date) & "." & Month(Date) & "." & Year(Date) & " " & ThisWorkbook.Name

ThisWorkbook.SaveCopyAs nomecopia

End Sub


Codice: Seleziona tutto
Sub CloseOpen()
'Stop
Dim Ckwb As Workbook, mySplit, FFName As String
FFName = "Q:\SCANNERTRASPORTI\DOC UFF TRASPORTI\PRATICHE SIDERURGICO.xlsx"                 '<<< Percorso e nome del file da aprire
mySplit = Split(FFName, "\", , vbTextCompare)
On Error Resume Next
    Set Ckwb = Workbooks(mySplit(UBound(mySplit)))
On Error GoTo 0
If Ckwb Is Nothing Then Exit Sub
Workbooks(mySplit(UBound(mySplit))).Close False
DoEvents
Workbooks.Open Filename:=FFName, ReadOnly:=True
myNext = Now + TimeSerial(0, 30, 0)
Application.OnTime myNext, "CloseOpen"
End Sub


Mentre PRATICHE
Non ha nulla perchè viene solo richiamato.

Ora suppongo di dover apportare la modifica da te suggerita al file LOCALIZZATORE in ThisWorkBook, ma non riesco a farlo funzionare.. sicuramente sto sbagliando qualche cosa Immagine
Avatar utente
systemcrack
Utente Senior
 
Post: 168
Iscritto il: 27/07/17 09:40

Re: Mettere in primo piano un file excel rispetto ad un altr

Postdi Anthony47 » 15/11/22 11:30

Io avevo detto:
Codice: Seleziona tutto
'
Workbooks.Open "LOCALIZZATORE.xlsm" + opzioni
ThisWorkbook.Activate       'Se la macro e' contenuta in PRATICHE.xslx
'..


Visto che il file ausiliario lo apri all'apertura del file principale, modificherai la attuale Sub Workbook_Open:
Codice: Seleziona tutto
'..
End If
Call CloseOpen
ThisWorkbook.Activate          '<<<
End Sub

Non ho capito cosa fai con la CloseOpen, che riesegui periodicamente; a me pare che in sequenza chiudi il file PRATICHE SIDERURGICO.xlsx e immediatamente lo riapri. Non so lo scopo di questo apri e chiudi, ma aggiungi anche qui l'attivazione del file principale:
Codice: Seleziona tutto
'..
Workbooks.Open Filename:=FFName, ReadOnly:=True
myNext = Now + TimeSerial(0, 30, 0)
Application.OnTime myNext, "CloseOpen"
ThisWorkbook.Activate          '<<<
End Sub

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

Re: Mettere in primo piano un file excel rispetto ad un altr

Postdi systemcrack » 15/11/22 15:59

Grande Anthony47 sei veramente il migliore!!! Così funziona!
Anthony47 ha scritto:Non ho capito cosa fai con la CloseOpen, che riesegui periodicamente; a me pare che in sequenza chiudi il file PRATICHE SIDERURGICO.xlsx e immediatamente lo riapri. Non so lo scopo di questo apri e chiudi, ma aggiungi anche qui l'attivazione del file principale:
Codice: Seleziona tutto
'..
Workbooks.Open Filename:=FFName, ReadOnly:=True
myNext = Now + TimeSerial(0, 30, 0)
Application.OnTime myNext, "CloseOpen"
ThisWorkbook.Activate          '<<<
End Sub

Ciao

Eh perchè io non so esattamente ogni stringa cosa fa. Sono andato a rileggermi i vecchi post e ho cercato di aggiustare quello script al mio caso. Quella parte lì se non ricordo male era perchè l'altro file doveva autoaggiornarsi ogni minuto, io ho aumentato il tempo a 30 min.

Ed ora ho imparato una cosa nuova ;)
Avatar utente
systemcrack
Utente Senior
 
Post: 168
Iscritto il: 27/07/17 09:40

Re: Mettere in primo piano un file excel rispetto ad un altr

Postdi Anthony47 » 15/11/22 19:44

Quella parte lì se non ricordo male era perchè l'altro file doveva autoaggiornarsi ogni minuto, io ho aumentato il tempo a 30 min.
Si, ha senso: se il file viene aggiornato (da altri) allora chiuderlo e riaprirlo periodicamente ti dà l'ultima versione...
Avatar utente
Anthony47
Moderatore
 
Post: 18601
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Mettere in primo piano un file excel rispetto ad un altro":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti