Condividi:        

prelevare grande quantita di informazioni

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

Re: prelevare grande quantita di informazioni

Postdi raimea » 28/02/11 17:57

io non sono molto bravo,
quello che ho imparato lo fatto registrando e poi pian piano provayo a modificare.
consiglio utilissimo lavora sempre su una copia del file.....

per le dispense non ne ho ,comunque i miei lavori
fatti con l'aiuto del forum sono tutti on.linee qui, e puoi scaricarli e
vedere le macro e smanettarci.
ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 01/03/11 00:15

Neanche io ho letto dispense, ho come te modificato le macro del registratore, e tutte le volte che trovo una istruzione nuova guardo nell' help on line che significa, come si usa, e che uso ne posso fare.

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

Re: prelevare grande quantita di informazioni

Postdi raimea » 01/03/11 18:22

formule.

con questa parte di macro mi preleva correttamente i dati e me li sistema correttamente,
dove scritto nella macro.

Codice: Seleziona tutto
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("c9:c1000").Copy Destination:=ThisWorkbook.Sheets("giornaliero").Range("ac7")
ActiveWorkbook.Close SaveChanges:=False
 
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ac7").Select  ' la cella dove incollare i dati

percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("l9:l1000").Copy Destination:=ThisWorkbook.Sheets("giornaliero").Range("ad7")
ActiveWorkbook.Close SaveChanges:=False
 
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ad7").Select  ' la cella dove incollare i dati

percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("n9:n1000").Copy Destination:=ThisWorkbook.Sheets("giornaliero").Range("ae7")
ActiveWorkbook.Close SaveChanges:=False
 
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ae7").Select  ' la cella dove incollare i dati
    Range("J5").Select


ho un problema sul file di origine.
cioe', se il foglio nel file dove prelevo, non e' protetto mi importa anche le formule,
cosa che non voglio.
mentre se il file dove prelevo e' protetto mi importa correttamente solo i valori.
ho provato a -forzare - la protezione quando entro nel file (foglio) da cui prelevare,
ma non sono riuscito a risolvere.
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 01/03/11 22:57

Prova a fare PasteSpecial-Value; qualcosa come
Codice: Seleziona tutto
Range("c9:c1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("ac7") PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveWorkbook.Close SaveChanges:=False

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

Re: prelevare grande quantita di informazioni

Postdi raimea » 02/03/11 07:15

:-?
errore di compilazione...
ho provato ad inserire la macro sopra ma mi da errore di compilazione.
se questa parte
PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

la scrivo andando a capo, mi accetta solo che quando eseguo la macro li' si ferma e dice:
errrore di compilazione --> sub o function non definita

al momento non allego file xche la macro fa riferimento ad altri file , ma se vi fosse necessario
metto il file.
grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 02/03/11 09:45

E non ha torto!
Codice: Seleziona tutto
ThisWorkbook.Sheets("giornaliero").Range("ac7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
:D
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: prelevare grande quantita di informazioni

Postdi raimea » 02/03/11 18:25

mannaggia al puntino mancante.... :)
ho sistemato, ed ho dovuto anche rimettere

Codice: Seleziona tutto
Application.CutCopyMode = False  '<<< toglie avviso di molti dati


altrimenti appariva ancora l'avviso di molti dati ecc....
questa la macro , che importa solo i valori anche con foglio di origine non protetto.

Codice: Seleziona tutto
Sub prelover()
ActiveSheet.Unprotect

                                      '5to prelievo
percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("c9:c1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("ac7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False

fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ac7").Select  ' la cella dove incollare i dati

percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("l9:l1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("ad7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False

fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ad7").Select  ' la cella dove incollare i dati

percorso = "D:\totosi/scommesse 2010"     ' <<< la cartella dove prelevo il dato
file = "luga-ovr1,5 2010.xls"    ' <<< il file dove preleva
Workbooks.Open percorso & "\" & file
Workbooks(file).Worksheets("1-luga.ovr1,5-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("n9:n1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("ae7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False
 
fil = "generale.lugascommesse.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("ae7").Select  ' la cella dove incollare i dati
   
Columns("ac:ae").EntireColumn.AutoFit  ' adatta la larghezza colonna al contenuto
        Cells.Rows.AutoFit
                 
 ActiveWindow.DisplayGridlines = False
   Range("ac2").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True

End Sub


un ultimo caso, non sempre mi si inchioada a :
Codice: Seleziona tutto
Sheets("giornaliero").Select

con errore run-timo 9 indice non incluso nell'intervallo ?
perche :?:
comunque grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: prelevare grande quantita di informazioni

Postdi raimea » 02/03/11 18:42

come non detto
un ultimo caso, non sempre mi si inchioada a :
Codice: Seleziona tutto
Sheets("giornaliero").Select
con errore run-timo 9 indice non incluso nell'intervallo ?
perche

facevo un errore di compilazione
tutto ok funziona tutto.
grazie
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

prelevare da altro file gia aperto

Postdi raimea » 12/07/11 06:25

ciao a tutti

con questa parte di una macro prelevo dai dati da un altro file (masa1) e li riporto
correttamente nel file "generale-masaniello":

Codice: Seleziona tutto
Sub prel1()

ActiveSheet.Unprotect

Application.ScreenUpdating = False
Application.Calculation = xlManual
                                                             
                                                             
                                                             
                                                         
Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
Application.Workbooks.Open Percorso & Nfile
                                                             
Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("c9:c1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("m7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False
 

fil = "generale.masaniello.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select

Range("m7").Select  ' la cella dove incollare i dati

end sub


tutto funzione se il file -masa1- lo trova chiuso.

vorrei poter prelevare sia con file -masa1- gia aperto - o file chiuso , ( come funziona ora).

nel caso il file lo trovi aperto lo deve lasciare aperto.
nel caso il file lo trovi chiuso lo deve lasciare chiuso ( come fa ora)

al momento se faccio partire la macro e masa1 e' aperto mi da l'avviso:
file gia aperto, riaprendolo le modif andrebbero perse....

quindi io non vorrei piu vedere tale avviso e ovviamente non vorrei perdere le modif. nel caso ci fossero. :neutral:

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

Re: prelevare grande quantita di informazioni

Postdi Avatar3 » 12/07/11 22:32

Inserisci questo codice in un modulo
all'interno dove indicato inserisci la call alla tua macro
se il file Masa1 era aperto rimane aperto
se era chiuso viene aperto utilizzato e richiuso

Codice: Seleziona tutto
Public FileM As Integer, MyXL As Object, Percorso, Nfile  As String

Sub TestFileAperto()
FileM = 0
Percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
    Dim ExcelWasNotRunning As Boolean
    On Error Resume Next
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    On Error GoTo 0
    Err.Clear
    DetectExcel
    If FileM = 1 Then
    Set MyXL = GetObject(Percorso & Nfile)
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(2).Visible = True
   
    End If
    'inserisci la call alla tua macro
    MsgBox " Macro"
   
    If FileM = 1 Then
    Workbooks("Masa1.xls").Close savechanges:=False
    End If
Set MyXL = Nothing

End Sub
Sub DetectExcel()
DetectExcel:
Dim FindWindow As Object
     On Error Resume Next
    If MyXL.Parent.Windows(2).Visible = True Then
    If Err.Number <> 0 Then
    ExcelWasNotRunning = True
   ' MsgBox " File Chiuso"
          FileM = 1
        Exit Sub
    End If
    End If
End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 13/07/11 00:34

Penso che Avatar l' abbia fatto troppo complicata.
Inserisci in un Modulo questa macro:
Codice: Seleziona tutto
Function ckf(nomefile) As Boolean
For Each Wb In Workbooks
    If Wb.Name = nomefile Then
        ckf = True: Exit Function
    End If
Next Wb
End Function

Poi in testa alla tua macro inserisci
Codice: Seleziona tutto
Dim masopen As Boolean
masopen=ckf("masa1.xls")   'True=file gia' aperto
Poi userai la variabile booleana masopen per fare o non fare certe cose a seconda dello stato; ad esempio userai, qualche riga dopo
Codice: Seleziona tutto
if masopen = false then Application.Workbooks.Open Percorso & Nfile


E' molto simile nel flow a quanto proposto da Avatar, mi sembra solo un po' piu' semplice.

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

Re: prelevare grande quantita di informazioni

Postdi raimea » 13/07/11 08:57

x antony: sono convinto che la sua vers sia piu semplice ma non sono stato in grado
di creare tutti i comandi... :undecided:

x avatar:
quando lancio la macro mi si blocca a questo comando in -masa1-

Codice: Seleziona tutto
Private Sub Workbook_Open()
Sheets("1-masa1-fogl.base").Select '<<<<  si blocca qui - apri sempre questo

Range("c65536").End(xlUp).Offset(1, 0).Select ' posizionati alla prima riga vuota

End Sub


(serve a portare sempre nello stesso fogl all'apert file )
quindi non e' un problm della sua macro,
penso che per risolvere sarebbe sufficente disabilitare le macro all'aperture file
ma come ? in che punto della macro ?
grazie ad entrambi
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: prelevare grande quantita di informazioni

Postdi Avatar3 » 13/07/11 09:04

Vorrei sapere se
aprendo Masa1 senza la macro ma manualmente quel codice funziona?
Se si significa che non è attivo il file masa1
quindi lo devi rendere attivo
----
Cancella quel codice sul file Masa1
e sostituisci solo la macro TestFileAperto (dove sono state aggiunte 3 righe codice)
Codice: Seleziona tutto
Sub TestFileAperto()
FileM = 0
percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
    Dim ExcelWasNotRunning As Boolean
    On Error Resume Next
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    On Error GoTo 0
    Err.Clear
    DetectExcel
    If FileM = 1 Then
    Set MyXL = GetObject(percorso & Nfile)
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(2).Visible = True
    Workbooks(2).Activate   '<<<<<<<< aggiungere
    Sheets("1-masa1-fogl.base").Select '<<<<  inserire qui la riga che era su Masa1
    Range("c65536").End(xlUp).Offset(1, 0).Select '<<<< inserire qui la riga che era su Masa1
    End If
    'inserisci la call alla tua macro
    MsgBox " Macro"
   
    If FileM = 1 Then
    Workbooks("Masa1.xls").Close savechanges:=False
    End If
Set MyXL = Nothing

End Sub
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: prelevare grande quantita di informazioni

Postdi raimea » 13/07/11 11:38

aprendo -masa1- senza macro quel codice non funziona.
ora la nuova macro si bolocca aui:

Codice: Seleziona tutto
 Err.Clear
    DetectExcel  <<< si blocca qui
    If FileM = 1 Then
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 13/07/11 14:28

L' unico altro comando che avresti dovuto piazzare nella tua macro e'
Codice: Seleziona tutto
if masopen = false then ActiveWorkbook.Close SaveChanges:=False
(cioe' aggiungere If masopen = false then sulla istruzione che chiude senza guardare in faccia nessuno)

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

prelevare grande quantita di informazioni

Postdi raimea » 13/07/11 15:01

:-? provo a riassumere
in un modulo nuove, del file che deve prelevare ho messo :
Codice: Seleziona tutto
Function ckf(nomefile) As Boolean
For Each Wb In Workbooks
    If Wb.Name = nomefile Then
        ckf = True: Exit Function
    End If
Next Wb
End Function


poi in cima alla mia solita macro ho messo
Codice: Seleziona tutto
Dim masopen As Boolean
masopen = ckf("masa1.xls") 'True=file gia' aperto   '<<< mi dseleziona in giallo masa1.xls


e ho pure messo
Codice: Seleziona tutto
if masopen = false then ActiveWorkbook.Close SaveChanges:=False


ma se faccio partire prel1 mi si blocca in cima mettendomi giallo ("masa1.xls")


questa la macro pel1 completa:

Codice: Seleziona tutto
Dim masopen As Boolean
masopen = ckf("masa1.xls") 'True=file gia' aperto
Sub prel1()

ActiveSheet.Unprotect

Application.ScreenUpdating = False
Application.Calculation = xlManual
 
  If masopen = False Then ActiveWorkbook.Close SaveChanges:=False   '<<< ultimo inserimento..
 
percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
Application.Workbooks.Open percorso & Nfile
                                                             
Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("c9:c1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("m7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False
 

fil = "generale.masaniello.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select

Range("m7").Select  ' la cella dove incollare i dati


percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
Application.Workbooks.Open percorso & Nfile

Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("l9:l1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("n7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False
 

fil = "generale.masaniello.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select

Range("n7").Select  ' la cella dove incollare i dati


percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
Application.Workbooks.Open percorso & Nfile

Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva

Range("n9:n1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("o7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

 Application.CutCopyMode = False  '<<< toglie avviso di molti dati
 ActiveWorkbook.Close SaveChanges:=False

fil = "generale.masaniello.xls"    '<<< il file dove devo portare il dato
Sheets("giornaliero").Select
Range("o7").Select  ' la cella dove incollare i dati

 Columns("n:o").EntireColumn.AutoFit  ' adatta la larghezza colonna al contenuto
        Cells.Rows.AutoFit
         
         Columns("p:p").ColumnWidth = 3
         
 ActiveWindow.DisplayGridlines = False
   
Range("m65536").End(xlUp).Offset(1, 0).Select  ' vai alla prima cella libera di col u

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True
       
        Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
       

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

Re: prelevare grande quantita di informazioni

Postdi Anthony47 » 13/07/11 15:43

NO:
Dim masopen As Boolean
masopen = ckf("masa1.xls") 'True=file gia' aperto
Sub prel1()

MA
Codice: Seleziona tutto
Sub prel1()
Dim masopen As Boolean
masopen = ckf("masa1.xls") 'True=file gia' aperto
'etc etc


Togli all' inizio
If masopen = False Then ActiveWorkbook.Close SaveChanges:=False '<<< ultimo inserimento..


NO
Application.Workbooks.Open percorso & Nfile

MA
Codice: Seleziona tutto
 If masopen = False Then Application.Workbooks.Open percorso & Nfile


Piu' in avanti, NO
Application.CutCopyMode = False '<<< toglie avviso di molti dati QUESTA E' OK
ActiveWorkbook.Close SaveChanges:=False '<<< NO A QUESTA

MA
Codice: Seleziona tutto
Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen =false Then ActiveWorkbook.Close SaveChanges:=False   '<< Noti la differenza?


Non capisco quelle istruzioni del tipo fil = "generale.lugascommesse.xls", come pure sconsiglio l' uso di variabili col nome simile a parole chiavi, come in file = "luga-ovr1,5 2010.xls"

INFINE MI rendo conto che e' necessario che la ckf(nomefile) attivi il file "nomefile", se gia' aperto, alrimenti dovrai farlo nella macro di partenza; modifica quindi CKF in
Codice: Seleziona tutto
    Function ckf(nomefile) As Boolean
    For Each Wb In Workbooks
        If Wb.Name = nomefile Then
            ckf = True: Wb.Activate: Exit Function  '<<MODIFICATA
        End If
    Next Wb
    End Function

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

prelevare grande quantita di informazioni

Postdi raimea » 13/07/11 17:39

mm :eeh:
ho fatto i vari accorgimenti,
ora la macro prel1 funziona, ma come prima , cioe' solo se
il file da cui preleva -masa1- e' chiuso.

mi si blocca qui:

Codice: Seleziona tutto
ThisWorkbook.Sheets("giornaliero").Range("m7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False


questa la macro generale:

Codice: Seleziona tutto
Sub prel1()

Dim masopen As Boolean
masopen = ckf("masa1.xls") 'True=file gia' aperto
ActiveSheet.Unprotect

Application.ScreenUpdating = False
Application.Calculation = xlManual
 
   
percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile
                                                             
Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva
Range("c9:c1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("m7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close SaveChanges:=False
Sheets("giornaliero").Select
Range("m7").Select  ' la cella dove incollare i dati


percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile

Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva
Range("l9:l1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("n7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close SaveChanges:=False
Sheets("giornaliero").Select
Range("n7").Select  ' la cella dove incollare i dati


percorso = Application.ActiveWorkbook.Path
Nfile = "\" & "masa1.xls"
If masopen = False Then Application.Workbooks.Open percorso & Nfile

Worksheets("1-masa1-Fogl.Base").Activate   ' <<< il foglio dal quale dove preleva
Range("n9:n1000").Copy
ThisWorkbook.Sheets("giornaliero").Range("o7").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False  '<<< toglie avviso di molti dati
If masopen = False Then ActiveWorkbook.Close SaveChanges:=False
Sheets("giornaliero").Select
Range("o7").Select  ' la cella dove incollare i dati

 Columns("n:o").EntireColumn.AutoFit  ' adatta la larghezza colonna al contenuto
        Cells.Rows.AutoFit
         
         Columns("p:p").ColumnWidth = 3
         
 ActiveWindow.DisplayGridlines = False
   
Range("m65536").End(xlUp).Offset(1, 0).Select  ' vai alla prima cella libera di col u

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowFiltering _
        :=True
       
        Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
       

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

Re: prelevare grande quantita di informazioni

Postdi Avatar3 » 13/07/11 18:05

Perché dovevi sostituire solo la macro che ti ho inviato mentre tu hai cancellato
Sub DetectExcel()
e magari anche le dichiarazioni public all'inizio del modulo
quindi riprendi tutto il primo codice inviato
che contiene
1) Dichiarazioni inizio modulo
2) macro TestFileAperto
3) macro DetectExcel
incolli nel modulo
poi prendi la macro ultima inviata (TestFileAperto)
e sostituisci solo questa macro punto 2)
senza cancellare il resto 1) e 3)
(dichiarazioni e DetectExcel)
in masa1 togli il codice come ti dicevo
vedrai che tutto funziona in quanto testata
fai in maniera tale da non avere altri file di excel aperti oltre a questo (che contiene la macro) e a Masa1 (che può essere chiuso o aperto)
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04

Re: prelevare grande quantita di informazioni

Postdi raimea » 13/07/11 18:24

x avatar..
ok ho capito dove ho sbagliato,
ora metto un attimo in stand-bay i tuoi PREZIOZISSIMI consigli
provo a vedere se riesco a risolvere con la macro di antony,
il motivo di questa decisione e la tua ultima specifica,

fai in maniera tale da non avere altri file di excel aperti oltre a questo (che contiene la macro) e a Masa1 (che può essere chiuso o aperto)


spero che non ti arrabbi..... :oops:
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1410
Iscritto il: 11/02/10 07:33
Località: lago

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "prelevare grande quantita di informazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti

cron