Condividi tramite

formula su excel vba

Anonimo
2018-04-07T17:57:52+00:00

Ciao,

ho questo domanda,

ho una formula sul una foglio excel ( tanti file excel ) vorrei cambiare una formula su una cella ma da vba

la formula è

=SE('mod_E_inventario dotazione AA!O4>=1;CONTA.NUMERI('mod_E_inventario dotazione AA!A8:A79);0) 

su vba ho provato ma non va, ansi non scrive nulla sul file 

Do While strFile <> ""

            oExcel.Workbooks.Open mFolder & strFile

                oExcel.Sheets("Riepilogo").Select

                oExcel.Sheets("Riepilogo").Unprotect

With oExcel.ActiveSheet

.Range("D6").Select    

          strFormula = .Range("D6").Formula  ' fase di test legge la formula attuale

          .Range("D6").Formula = "=IF('mod_E_inventario dotazione AA!O4>=1,CONTA.NUMERI('mod_E_inventario dotazione AA!L8:L79),0)"     scrivo su file

                       strFormula = .Range("D6").Formula 'la trovo du D6

                End With

                      oExcel.Sheets("Riepilogo").Protect

oExcel.ActiveWorkbook.Close False ' esco 

            Loop

ma quando apro il file non trovo nulla cambiato

qualche aiuto :)

grazie del aiuto in anticipo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

4 risposte

Ordina per: Più utili
  1. Anonimo
    2018-04-09T05:39:13+00:00

    grazie di nuovo m il mio problema non è quello 

    ho creato la macro sun un file excel che deve modificare una formula su altri file excel senza aprili 

    riesco a leggere l dato della cella ma non mi lo modifica 

    qui ce tutto il codice 

    For iStato = 0 To 1 ' ciclo completo di tutti i dir

    mFolder = ThisWorkbook.Path  & stPath1Fisso & "" & stPm1 & ""

                strFile = Dir(mFolder & "*.xlsx") file nome 600.xlsx

                iRCount = 2

                Do While strFile <> ""

               If strFile <> "Riepilogo.xlsm" Then

                    oExcel.Workbooks.Open mFolder & strFile

                    oExcel.Sheets("Riepilogo").Select

    oExcel.ActiveSheet.Unprotect

                    If Not oExcel.ActiveSheet.Unprotect Then

                        MsgBox "This workbook contains not unportected  ."

                    End If

    With oExcel

                           strFormula = .Range("D6").Formula 'ActiveCell.Formula

                         .Range("D6").ClearContents

                           strFormula = .Range("D6").Formula 'ActiveCell.Formula

    .Range("D6").Formula = _

                    "=IF('mod_E_inventario dotazione AA'!O4>=1," _

                              & "COUNTA('mod_E_inventario dotazione AA'!L8:L79),0)"

                           strFormula = .Range("D6").Formula 'ActiveCell.Formula

                      '  .Protect Password:=""    ' non lo fa

                      '    If Not .Protect Then

                      '      MsgBox "This workbook contains not portected 1  ."

                      '     End If

                    End With

    End If

                oExcel.ThisWorkbook.Save

                oExcel.ActiveWorkbook.Saved = True

                If Not oExcel.ActiveWorkbook.Saved Then

                     MsgBox "This workbook contains unsaved changes."

                End If

                oExcel.ActiveWorkbook.Close

                strFile = Dir

                Loop

        Next iStato

         oExcel.Qui

         Set oExcel = Nothing

    fine 

    non so in cosa sto sbagliano ma so che il file non si modifica 

    e non so cosa fare 

    graze di novo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-04-08T21:42:51+00:00

    Ciao Gio71,

    grazie della risosta 

    ma non si salva la formula sul file excel 

    A8:A79 non cambia a L8:L79 

    ho provato ad aggiungere alla fine  

                oExcel.ActiveWorkbook.Saved = True

                oExcel.ActiveWorkbook.Close False 

    ma nulla cambiato

    Questo perchè mentre ho modificato il codice per corregere la sintassi, non ho effetuato la modifica dell'intervallo di interesse.

    Quindi, prova:

           .Range("D6").Formula = _

                    "=IF('mod_E_inventario dotazione AA'!O4>=1," _

                              & "COUNTA('mod_E_inventario dotazione AA'!L8:L79),0)"

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-04-08T16:46:44+00:00

    grazie della risosta 

    ma non si salva la formula sul file excel 

    A8:A79 non cambia a L8:L79 

    ho provato ad aggiungere alla fine  

                oExcel.ActiveWorkbook.Saved = True

                oExcel.ActiveWorkbook.Close False 

    ma nulla cambiato

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-04-08T11:57:30+00:00

    Ciao Gio71,

    ho una formula sul una foglio excel ( tanti file excel ) vorrei cambiare una formula su una cella ma da vba

    la formula è

    =SE('mod_E_inventario dotazione AA!O4>=1;CONTA.NUMERI('mod_E_inventario dotazione AA!A8:A79);0) 

    su vba ho provato ma non va, ansi non scrive nulla sul file 

     

    Do While strFile <> ""

                oExcel.Workbooks.Open mFolder & strFile

                    oExcel.Sheets("Riepilogo").Select

                    oExcel.Sheets("Riepilogo").Unprotect

    With oExcel.ActiveSheet

            .Range("D6").Select    

              strFormula = .Range("D6").Formula  ' fase di test legge la formula attuale

              .Range("D6").Formula = "=IF('mod_E_inventario dotazione AA!O4>=1,CONTA.NUMERI('mod_E_inventario dotazione AA!L8:L79),0)"     scrivo su file

                           strFormula = .Range("D6").Formula 'la trovo du D6

                    End With

                          oExcel.Sheets("Riepilogo").Protect 

               oExcel.ActiveWorkbook.Close False ' esco 

                Loop

    ma quando apro il file non trovo nulla cambiato

    Prova a sostituire

              .Range("D6").Formula = "=IF('mod_E_inventario dotazione AA!O4>=1,CONTA.NUMERI('mod_E_inventario dotazione AA!L8:L79),0)" 

    con:

        .Range("D6").Formula = _

                    "=IF('mod_E_inventario dotazione AA**'**!O4>=1," _

                              & "COUNTA('mod_E_inventario dotazione AA**'**!A8:A79),0)"

    Nota l'aggiunta di una virgoletta prima di ciascuna delle due istanze del punto esclamativo e nota che  VBA riconosce solo la forma inglese della funzione CONTA.NUMERI.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento