+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Modifica cella Excel da VBA

  1. #1
    rossonero non è in linea Scolaretto
    Post
    64

    Modifica cella Excel da VBA

    Ciao a tutti,
    ho il sospetto che sto perdendomi in un bicchier d'acqua, ma non ne vengo fuori: ho la necessità, partendo da un foglio attivo, di duplicarlo e contestualmente di modificare il contenuto di alcune celle.
    Il codice non mi segnala alcun errore, ma non succede comunque niente: qualche suggerimento ?
    Magari anche l'approccio non è il migliore.
    Grazie.

    codice:
    'CREO UN NUOVO FILE CHE CHIAMO test.xlsx COPIANDO IL FOGLIO ATTIVO SU CUI STO LAVORANDO
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:="C:\Users\" & percorsoUtente & "\Desktop\test.xlsx”, _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ThisWorkbook.Close savechanges:=True
    
    Dim WB As Workbook
    Dim sh As Worksheet
    
    Set WB = Application.Workbooks.Open("C:\Users\" & percorsoUtente & "\Desktop\test.xlsx")
    Set sh = WB.Worksheets(1)
    
    ThisWorkbook.Sheets(1).Activate
    
    ActiveWorkbook.Sheets(1).Range("A1").Select
    Selection.Text  = “Pippo"
    Ultima modifica di AntonioG; 18-03-2020 06:22  Motivo: Tag code per il codice

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    388
    Io approccerei così:
    1) salvi la cartella allo stato ante modifiche;
    2) modifichi tutti i valori delle celle che ti interessano
    3) salvi con nome in un nuovo file

    Ti eviti la riapertura del file. Sarà l'utente a cercarsi il file e ad aprirlo.

    In una macro, la selezione dei range per la modifica dei valori, è spesso inutile. Accedi alle celle direttamente con l'oggetto Range. La proprietà che ti interessa è Value, non Text che non esiste nemmeno.

  3. #3
    GiuseppeMN non è in linea Scribacchino
    Post
    761
    Buona giornata, a Tutti.

    Buona giornata, @rossonero;
    leggo solo ora.

    Se ho interpretato correttamente la Tua richiesta, dopo aver preso buona nota dei consigli di @Sgrubak, che saluto, potresti provare con questo Codice VBA:

    codice:
    Option Explicit
    
    Sub Test_VBA()
    Application.ScreenUpdating = False
    Const Pth As String = "C:\Prove\"
    Const NFl As String = "Test.xlsx"
    Const Rcd As String = "Pippo"
    
        ActiveSheet.Copy
            ActiveWorkbook.SaveAs Filename:=Pth & NFl       '      Salva il File
                Workbooks("test.xlsx").Close                '      Chiude il File
                    Workbooks.Open (Pth & NFl)              '      Riapre il File
        Sheets(1).Activate
        Range("A1") = Rcd                                   '   Scrive in Cella "A1"
    Application.ScreenUpdating = True
    End Sub
    Come puoi ben vedere, la Costante "Pth" contiene il percorso nel quale salvare il File con NomeFile contenuto nella Costante NFl.
    In sostanza il Codice VBA:
    - Salva il File NFl nella Directory (Cartella) Pth
    - Chiude il File NFl
    - Riapre il File NFl
    - Compila nella Cella "A1" con il Valore della Costante Rcd



    A disposizione.

    Giuseppe

  4. #4
    rossonero non è in linea Scolaretto
    Post
    64
    Grazie per il prezioso contributo a entrambi, ho seguito i consigli e risolto

  5. #5
    GiuseppeMN non è in linea Scribacchino
    Post
    761
    Buona giornata, @rossonero;
    grazie del riscontro, non è sempre così scontato.

    Consentimi solo una precisazione, il Codice VBA che ho proposto rispecchia la tua procedura; sinceramente avrei preferito evitare di:
    - Salvare il File
    - Chiuderlo
    - Riaprirlo
    - Compilare la Cella "A1"

    Voglio dire, nel nuovo File (Test.xlsx) si può pensare di Compilare la Cella "A1" prima di salvarlo; in questo modo si evita di doverlo riaprire.

    Poi, ovviamente vedi Tu.



    A disposizione.

    Giuseppe

  6. #6
    rossonero non è in linea Scolaretto
    Post
    64
    In effetti il tuo suggerimento è più che sensato, si eviterebbe un passaggio inutile.

    Grazie ancora e buona giornata.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi