Risolto Usare casella di testo per nome file

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Ciao, vorrei fare in modo che nel foglio word, inserendo un testo in una casella o in un campo o da qalche parte, poi con una macro possa salvare il file usando come nome il contenuto che ho inserito nella casella di testo.
So come fare la macro ma non riesco a trovare il modo di far leggere il contenuto della casella di testo e assegnarlo ad una variabile che poi utilizzo nella macro.
Qualche idea ?
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Ciao, mi piacerebbe allegare un file di esempio se ne avessi uno ma non sapendo come fare non saprei.
IL mio problema principale è appunto inserire un testo in una casella di testo o in un campo e assegnare questo valore ad una variabile in una macro. Come si fa a prendere il contenuto di una casella di testo o un campo e assegnarlo ad una variabile ? Poi una volta che ho questa variabile ci faccio quello che voglio e nel mio caso salvo il documento con il nome preso da questa variabile.
 

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
8.218
245
vicino a Milano
2019
280
Ciao, prova con questo codice
Visual Basic:
Sub salva()
fpath = ActiveDocument.Path & "ELENCO DEL "
s = ActiveDocument.FormFields("testo1").Result 'testo1 da cambiare con il nome della tua casella di testo'
FName = fpath & s & ".doc"
ActiveDocument.SaveAs (FName)
End Sub
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Ma come faccio a dare il nome alla casella di testo, ho cercato ovunque in word ma non trovo, nelle proprietà della casella non c'è nulla.
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Scusa la mia ignoranza in word, ma non riesco proprio a trovare le proprietà della casella. Sulla casella con tasto dx mouse non c'è nulla. Dove potrei cercare ?
 

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
8.218
245
vicino a Milano
2019
280
Prova così:
  1. avvia registratore di macro
  2. seleziona la tua casella di testo
  3. scrivi qualcosa dentro
  4. blocca la registrazione
  5. vai nell'editor del VBA e vedrai il codice contenente il nome della tua casella di testo
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
ho provato con il registratore di macro, nel foglio ho 3 caselle di testo, provo a scrivere qualcosa nelle caselle registrando la macro che è:
Visual Basic:
    ActiveDocument.Shapes.Range(Array("Casella di testo 2")).Select
    Selection.TypeText Text:="ciao"
    ActiveDocument.Shapes.Range(Array("Casella di testo 2")).Select
    Selection.TypeText Text:="cioa"
    ActiveDocument.Shapes.Range(Array("Casella di testo 2")).Select
    Selection.TypeText Text:="rosso"
sebbene le caselle siano differenti, le chiama tutte con lo stesso nome. Se esegui poi la macro, modifica sempre la stessa casella. Ho provato anche cambiare i numeri, ma scrive solo su una casella.

ho provato comunque ad assegnare il valore della casella ad una variabile
Visual Basic:
Dim s As String

fpath = ActiveDocument.Path & "ELENCO DEL "
s = ActiveDocument.FormFields("Casella di testo 2").Result 'testo1 da cambiare con il nome della tua casella di testo'
FName = fpath & s & ".doc"
ActiveDocument.SaveAs (FName)
ma mi da errore : il membro della raccolta non esiste.
 

Allegati

Powerwin

VBA Expert
Supermoderatore
17 Marzo 2016
8.218
245
vicino a Milano
2019
280
Ciao, perdonami, ma nel tuo primo post hai scritto
Ciao, vorrei fare in modo che nel foglio word, inserendo un testo in una casella o in un campo o da qalche parte, poi con una macro possa salvare il file usando come nome il contenuto che ho inserito nella casella di testo.
ora le caselle son diventate 3, ci dici per bene qual é la situazione ?

p.s. a me le caselle hanno nomi diversi, non è che per caso fai una copia delle caselle?
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Ciao, si ho scritto così ma non voleva dire che documento ci fosse una sola casella di testo, ma che inserivo il testo in una casella (una come articolo).
Ho provato ora ad aprire un nuovo documento, andare su inserisci e poi casella di testo, ho inserito 3 caselle senza copiarle, poi ho avviato il registratore e ho fatto come mi hai detto. Il risultato è quello che ti ho scritto, il codice lo crea con lo stesso nome per tutte le caselle. sopra ti ho allegato il file prova 2 con le macro.
Poi anche l'altra macro che mi hai scritto, inserendo il nome della casella, mi da errore come ti ho scritto. :confusostelle:
 

muni

VBA Expert
Expert
25 Novembre 2018
753
45
Roma
2013
56
Esegui una Msgbox(FName) prima di salvare e controlla il percorso completo con il nome... potrebbe mancare qualcosa
 

giulianovac

Access/VBA Expert
Staff
9 Giugno 2018
5.074
245
Italy
2019
402
ma mi da errore : il membro della raccolta non esiste.
A parte il fatto che nel tuo file NON c'è la macro che hai indicato, tu usi TextBox, che fanno parte della collection Shape.
Prova questo codice:
Codice:
    Dim i As Long
    For i = 1 To ThisDocument.Shapes.Count
        Debug.Print ThisDocument.Shapes(1).Name
    Next i
 

avatar17

Utente abituale
23 Maggio 2018
139
16
milano
2016
2
Non mi da nulla.
Ho allegato il file con la macro. nel documento ci sono 2 caselle di testo e un campo tipo moduli. io dovrei prelevare il contenuto di una di queste caselle di testo o del modulo e assegnarlo alla variabile.
Quello che non riesco a fare è appunto cosa scrivere per andare a prendere una o l'altra casella o il campo.
 

Allegati

muni

VBA Expert
Expert
25 Novembre 2018
753
45
Roma
2013
56
Per vedere il contenuto il codice è

Codice:
    For i = 1 To ThisDocument.Shapes.Count
        MsgBox (ThisDocument.Shapes.Item(i).TextFrame.TextRange.Text)
    Next i
Vedi tu come utilizzarlo
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!