Inserire dati



  • Inserire dati
    di Pino (utente non iscritto) data: 27/06/2016 14:43:04

    Buongiorno. Il mio problema è questo: ho una cartella di lavoro, che contiene molti files Excel (circa 500); ogni file Excel contiene a sua volta molti fogli (circa 20). Ho la necessità di inserire nel foglio 5 di tutti i file nella cella A43 una parola fissa (es. peso). La cella A43 è vuota, ed è compresa ovviamente tra A42 e A44: io vorrei mantenere una riga vuota sopra e sotto la nuova cella A43. E' possibile?. Attualmente utilizzo la macro che allego, per inserire nel foglio 28, cella A3, la lettera che identifica la chiavetta USB nel PC (la macro è in un file a parte, che si trova nella stessa cartella nella quale si trovano i file nei quali deve essere inserita la lettera che identifica la chiavetta USB): è possibile modificare questa macro (e in che modo ????) per farle fare quello che mi serve?? Grazie.
     
    Sub Inserisci_Formula()
    Dim Wkb As Workbook, Formula As String, percorso As String, Nome As String
    Dim Oggetto As Object, Cartella As Object, File_excel As Object, Est As String
    
    Application.ScreenUpdating = False
    percorso = ThisWorkbook.Path
    Set Oggetto = CreateObject("Scripting.FileSystemObject")
    Set Cartella = Oggetto.GetFolder(percorso)
    
    Formula = "=SINISTRA(CELLA(#nomefile#);1)"
    
    On Error GoTo prossimo
    For Each File_excel In Cartella.Files
        Nome = File_excel.Name
        If File_excel.Name <> ThisWorkbook.Name Then
            Workbooks.Open(percorso & "" & Nome).Sheets(28).Range("A3").FormulaLocal = Replace(Formula, "#", Chr(34))
            ActiveWorkbook.Close True
        End If
    prossimo:
    Next
    Application.ScreenUpdating = True
    MsgBox "Formule inserite!"
    End Sub



  • di Excel 2010 (utente non iscritto) data: 27/06/2016 15:06:22

    Con l'aiuto del registratore di macro ho creato la macro che allego, e che fa quello che mi serve. Il problema è come fare in modo che l'inserimento delle righe, della frase, e relativa formattazione, venga applicato a tutti i file della cartella di lavoro: è possibile?? Come va modificata la macro??



  • di Luca73 data: 27/06/2016 15:18:37

    La macro che hai qui sotto riportato apre tutti i file nella cartella, inserisce nel foglio 28, Cella A3 la prima lettera (della funzione CELLA("Nomefile"))
    ma tutto questo dovresti saperlo già in quanto se hai registrato la macro sai benissimo cosa fa soprattutto se l'hai modificata come l'hai riportata (il registratore non avrebbe prodotto tale listato)
    pertanto ti basta cambiare foglio, cambiare cella, inserire la tua formula e se necessario aggiungere sopra e sotto una riga bianca.
    Ciao
    Luca





  • di Pino (utente non iscritto) data: 27/06/2016 16:47:01

    Grazie Luca. Lavorandoci su ho creato un'altra macro, che fa quello che mi serve. L'unico problema è che non riesco a rinominare il foglio di destinazione: nella macro è il foglio1, ma se voglio che i dati siano inseriti nel foglio chiamato pippo come faccio?. Ho provato a modificare la macro, ma senza risultato. Allego il file con la macro che ho creato.



  • di Pino (utente non iscritto) data: 27/06/2016 16:59:36

    Dimenticavo. Se nella macro cambio il foglio di destinazione, es. da Sheets (1) a Sheets (2) compare il messaggio di errore "Errore nel metodo Select della classe range". Dove è che sbaglio??




  • di Pino (utente non iscritto) data: 27/06/2016 17:28:07

    Ho ancora modificato la macro, ora mi sembra funzioni bene!. Tuttavia l'esecuzione mi sembra piuttosto lenta, pur avendola testata solo su 5 file. Allego il file conclusivo per consigli in merito. Grazie.



  • di patel data: 27/06/2016 17:33:40

    devi dire qual'è l'ultimo file allegato, comunque la lentezza dipende dall'accesso al disco per aprire e chiudere i file





  • di Pino (utente non iscritto) data: 27/06/2016 19:01:07

    Il file è Inser.bis. Grazie.



  • di Luca73 data: 28/06/2016 09:02:00

    Ciao
    mi sono permesso di fare alcune correzioni e semplificazioni:
    - elimina tutte le variabili che non servono o che non usi.
    - elimina tutti i select e selection. punta dirattamente a cio che ti serve.

    Ciao
    Luca

     
    Sub Posso()
    
    ' Dim Wkb As Workbook, questa riga non serve variabile non utilizzata
    Dim Formula As String ' questa variabile secondo me è superflua se devi solo scrivere ipertensione
    Dim percorso As String, Nome As String
    Dim Oggetto As Object, Cartella As Object, File_excel As Object ', Est As String Est variabile non utilizzata
    Application.ScreenUpdating = False
    percorso = ThisWorkbook.Path
    Set Oggetto = CreateObject("Scripting.FileSystemObject")
    Set Cartella = Oggetto.GetFolder(percorso)
    Formula = "IPERTENSIONE"
    On Error GoTo prossimo
    For Each File_excel In Cartella.Files
        Nome = File_excel.Name
        If File_excel.Name <> ThisWorkbook.Name Then
            Workbooks.Open(percorso & "" & Nome).Sheets("Vuoto").Range("A2").FormulaLocal = Replace(Formula, "#", Chr(34))
            ' perchè usi la funzione replace? potresti benissimo inserire solo la scritta ipertensione
            '.....Formula = "IPERTENSIONE" ed eliminare anche la variabile funzione
        'elimina tutti i select, non servono
        Sheets("vuoto").Range("A2").EntireRow.Insert
        Sheets("vuoto").Range("A4").EntireRow.Insert
        Sheets("vuoto").Range("A3").Font.Bold = True
        With Sheets("vuoto").Range("A3").Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 65535
            '.TintAndShade = 0
            '.PatternTintAndShade = 0
           End With
        'Application.WindowState = xlMinimized elimina non ti serve stai per chiudere
        ActiveWorkbook.Close True
        End If
    prossimo:
    Next
    Application.ScreenUpdating = True
    MsgBox "Formule inserite!"
    End Sub
    






  • di Pino (utente non iscritto) data: 28/06/2016 09:46:34

    Grazie!! Mi sembra che ora giri anche più velocemente. Mi chiedevo ancora: se per caso volessi inserire, con lo stesso sistema, anche un'altra parola, in un foglio e/o in una riga diversa, è modificabile l'attuale macro, e in che termini?. Supponiamo ad esempio che voglia inserire nella cella A18 del foglio "VUOTO" la parola "PESO" come devo modificare la macro??
    E se invece la voglio inserire nel foglio3?? Grazie.




  • di Luca73 data: 28/06/2016 10:26:17

    Se Devi fare più modifiche ti basta aggiungere delle righe del tipo
    Sheets("vuoto").Range("A2").Formula="inserisci la parola"
    Dove
    - al posto di "vuoto" metti il nome del foglio di tuo interesse oppure il numero
    - al posto di "A2" metti la cella di tuo interesse e
    al posto di "inserisci parola" metti la parola o la frase che ti serve

    per sesempio
    Sheets("Dati").Range("L16").Formula="Ciao"
    ti scrive nel foglio dati range L16 la scritta ciao

    Attenzione tutto questo è facile finchè usi uno ed un solo workbook per volta pertanto rimane attivo fino a quando (nel tuo caso) non lo chiudi e pertanto quando richiami un foglio è del work book attivo.

    altrimenti potresti definire una nuova variabile e poi vedi sotto (nota [...] vuol dire che ho cancellato pezzi di codice:
     
    Sub Posso()
    
    Dim Wkb As Workbook,
    [...]
            set Wkb = Workbooks.Open(percorso & "" & Nome)
    
            Wkb.Sheets("Vuoto").Range("A2").Formula="Ipertensione"
            Wkb.Sheets("Dati").Range("L16").Formula="Ciao"
      [...]
        Wkb.Close True
        End If
    prossimo:
    Next
    Application.ScreenUpdating = True
    MsgBox "Formule inserite!"
    End Sub






  • di Pino (utente non iscritto) data: 28/06/2016 12:12:53

    Grazie Luca!! Terrò conto dei tuoi preziosi consigli!!!