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

MACRO COPIA IN ALTRO FILE

Ultimo Aggiornamento: 29/06/2018 16:44
Post: 83
Registrato il: 10/05/2005
Utente Junior
EXCEL 2016
OFFLINE
29/06/2018 08:07

RISOLTO - MACRO COPIA IN ALTRO FILE
Buongiorno a tutti,
ho un file xslm che riporta le giacenze di magazzino e pesca i dati da un sql. Si deve aggiornare ogni tot minuti e ad ogni aggiornamento deve salvare i dati in qu altro file xls e rinominato con il nome di una cella definita. Ho la necessità di sovrascrivere sempre il file destinazione perchè quel nome file verrà utilizzato per un'applicazione web.
Ho pasticciato un po' con le macro per farlo
1)aggiornare,
2)copiare solo i valori
3)copiare la formattazione (che magari poteva essere fatta nell'istruzione precedente ma non ci sono riuscito)
4)dare la destinazione del secondo file
5)assegnare il nome file alla cella

Ora nasce il problema: quando salvo il file lo deve sovrascrivere senza chiedermi altro e deve lasciare il file originale aperto altrimenti non si aggiorna (o c'è una macro che aggiorna fa tutto questo anche a file originale chiuso?)
Allego un file tipo e spero vivamente di ricevere assistenza
[Modificato da Bierrepi 29/06/2018 16:11]
----------
Excel 2010
Post: 83
Registrato il: 10/05/2005
Utente Junior
EXCEL 2016
OFFLINE
29/06/2018 08:27

Sper di non essere troppo pedante ma mi sono accorto di non aver detto cosa non funziona.
Una volta lanciata la macro Aggiorna, in maniera ciclica aggiorna e salva (gli ho impostato un nr. di secondi basso per vedere cosa faceva). Attualmente fa l'aggiornamento, apre il secondo file e mi chiede se lo voglio sovrascrivere (cosa che invece deve fare da solo)e poi chiede di salvare le modifiche al primo file (in questo caso invece dovrebbe lasciare il file così com'è dato che deve rimanere aperto e si aggiorna ogni tot.)
Grazie a tutti
----------
Excel 2010
Post: 3.570
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
29/06/2018 11:54

Personalmente non userei >>>Cells.Copy, userei EX un Range("A1:Z65000").Copy (per gli .xls, le righe sono 65536 e 256 colonne). Sempre abbia capito bene. Provalo dopo toglierai le spunte prima ed ultima riga
vb
Sub Copia_Dati()
'ActiveWorkbook.RefreshAll
Range("A1:Z65000").Copy
Dim Cartella As String, NomeFile As String, Risposta As Integer
Cartella = "\\CPINTRANET\tabelle-condivise\"
'Cartella = "C:\Users\Casa\Desktop\Prove_Excel\" 'riga da eliminare
NomeFile = Range("D1").Value & ".xls"
Application.ScreenUpdating = False
If Len(Dir$(Cartella & NomeFile)) Then
    Workbooks.Open Filename:=Cartella & NomeFile
    ActiveSheet.Range("A1").PasteSpecial
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    Application.DisplayAlerts = True
    ActiveWorkbook.Close
Else
    Risposta = MsgBox(prompt:="Il file non esiste? Creo uno nuovo? Si , No = fine procedura?", Buttons:=vbYesNo)
    If Risposta = vbYes Then
        Workbooks.Add
        ActiveSheet.Range("A1").PasteSpecial
        ActiveSheet.Cells.EntireColumn.AutoFit
            ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        ActiveWorkbook.Close
    End If
End If
Application.ScreenUpdating = True
'Call schedula
End Sub
Excel 2013
Post: 84
Registrato il: 10/05/2005
Utente Junior
EXCEL 2016
OFFLINE
29/06/2018 13:08

grazie Raffaele,
lanciata la macro Schedula, dopo nove secondi fa l'aggiornamento , chiede se vuoi creare o no il file e poi fine dei giochi. Ogni tot secondi dovrebbe fare l'aggiornamento che si interrompe solo se faccio partire la marco Ferma.
Mi sono perso il loop.
----------
Excel 2010
Post: 3.573
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
29/06/2018 13:43

Riproviamo in questo modo, se esiste già il files l'ho sovrascrive, se non esiste lo crea.
Se non esiste un NomeFile nella cella D1 non fa nulla
NB ActiveWorkbook.RefreshAll, credo serva ad aggiornare tabelle pivot, dato che non sono presenti nell'allegato, a me impalla il PC.
Attivato il timer
vb
Public Bin As Boolean
Sub Copia_Dati()
If Bin = True Then
'ActiveWorkbook.RefreshAll
Range("A1:Z65000").Copy
Dim Cartella As String, NomeFile As String, Risposta As Integer
Cartella = "\\CPINTRANET\tabelle-condivise\"
NomeFile = Range("D1").Value & ".xls"
If NomeFile <> "" Then
Application.ScreenUpdating = False
    If Len(Dir$(Cartella & NomeFile)) Then
        Workbooks.Open Filename:=Cartella & NomeFile
        ActiveSheet.Range("A1").PasteSpecial
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        Application.DisplayAlerts = True
        ActiveWorkbook.Close
    Else
        Workbooks.Add
        ActiveSheet.Range("A1").PasteSpecial
        ActiveSheet.Cells.EntireColumn.AutoFit
            ActiveWorkbook.SaveAs Filename:=Cartella & NomeFile, FileFormat:=xlExcel8, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
        ActiveWorkbook.Close
    End If
Application.ScreenUpdating = True
End If
Call schedula
End If
End Sub
Sub schedula()
    Application.OnTime Now + TimeValue("00:00:10"), "Copia_Dati"
    Bin = True
End Sub
Sub ferma()
    Bin = False
 End Sub
[Modificato da raffaele1953 29/06/2018 15:47]
Excel 2013
Post: 85
Registrato il: 10/05/2005
Utente Junior
EXCEL 2016
OFFLINE
29/06/2018 16:44

Grazie Raffaele,
sei stato risolutivo, senza questo aiuto non ce l'avrei fatta.
Ora me la studio per bene.
Grazie ancora.

PS ho provato a mettere risolto nella discussione ma mi ha cambiato solo il nome del primo post; sai come poterlo fare?
Saluti
Renato
----------
Excel 2010
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 09:36. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com