+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [Office 2010] flaggare casella in word da vba excel

  1. #1
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52

    [Office 2010] flaggare casella in word da vba excel

    Buongiorno a tutta la board,
    ho un problema con la compilazione di un foglio word dal VBA di Excel 2010, nel dettaglio devo compilare un modulo word con una serie di dati (nome, cognome etc..) ma devo anche flaggare una casella in base a varie condizioni.
    L'inserimento dei campi l'ho risolto con l'inserimento dei segnalibri sul modulo word, in questo modo :
    codice:
    Sub copiasuword()
    folderpath = Application.ActiveWorkbook.Path 'Percorso File
    Stringa1 = Range("e2").Value
    Stringa2 = Range("f2").Value
    Dim sFILENAME As String
    sFILENAME = Application.ActiveWorkbook.Path & "\attestato di qualifica.docx"
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
    Set wrdDoc = wrdApp.Documents.Open(sFILENAME)
    With wrdDoc
    .Bookmarks("cognome").Range.Text = Stringa1
    .Bookmarks("nome").Range.Text = Stringa2
    End With
    ActiveDocument.SaveAs Filename:=folderpath & "\Repository\" & Stringa1 & ".docx"
    wrdApp.Quit
    End Sub
    ma ho anche delle caselle da flaggare come nella foto allegata,https://photos.app.goo.gl/obcYFzCfWDLvxpvg9 che non so come attivare tramite VBA, c'è un modo per farlo ?
    Grazie per l'attenzione
    Office 2010

  2. #2
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52
    Ho qualche info in più, i box sono inseriti dalla scheda sviluppo, ed è una casella di controllo (controllo modulo) moduli Legacy.
    Poi evidenziandolo e andando in proprietà c'è la possibilità di inserite "titolo" e "Tag" quindi è identificabile, ma come la controllo da vba Excel ?
    Office 2010

  3. #3
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3
    il CheckBox facente parte dei controlli Legacy, se non ricordo male, dipende dall'oggetto Document, quindi dovresti potervi accedere tramite la variabile oggetto relativa al Documento che hai dichiarato nel tuo codice:

    codice:
    wrdDoc.NomeTuoCheckBox.Value = True
    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  4. #4
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52
    grazie per la risposta, ma non riesco a inserirlo nel mio codice (vista anche la mia conoscenza scolastica di vba) cortesemente potresti darmi qualche info in più per provare ad inserirlo ?
    Grazie ancora
    Office 2010

  5. #5
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3
    Scusami, capisco la poca competenza, ma hai scritto già il codice che ti inserisce i dati in corrispondenza dei Bookmarks... devi semplicemente aggiungere in quella parte la riga di codice che ti ho riportato nel post precedente, cambiando "NomeTuoCheckBox" con il nome che hai attribuito al tuo controllo.

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  6. #6
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52
    ma ho fatto proprio cosi e mi restituisce
    "proprietà o metodo non supportati dall'oggetto", allora ho pensato che avessi sbagliato qualcosa, credevo dovessi aggiungere qualche riferimento o dichiarare qualcos'altro sul codice.
    ho provato anche questo trovato in rete, ma non va,
    codice:
    objDoc.FormFields("prova").CheckBox.Value = True
    .
    e giusto per allinearci, io parlo della "casella di controllo" inseribile dai moduli legacy e non la "casella combinata" sempre legacy, giusto (allego foto)
    https://www.dropbox.com/s/wffdprcd3k...aglio.JPG?dl=0
    Office 2010

  7. #7
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52
    ho provato a inserire una checkbox dei controlli ActiveX e la tua riga di codice funziona, sarebbe possibile darmi un suggerimento per la "casella di controllo" legacy ?
    Se non è possibile grazie mille comunque per l'assistenza.
    Ciao e Auguroni per le feste
    Office 2010

  8. #8
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3
    OK. Allora avevo equivocato il tipo di controllo... credevo avessi utilizzato l'ActiveX.

    In questo caso, il controllo va a far parte della collection FormFields e, come hai già detto prima, l'unico modo per valorizzare il controllo è questo:

    codice:
    objDoc.FormFields("NomeDelControllo").CheckBox.Value = True
    Ovviamente "NomeDelControllo", è il nome che assegni al controllo nella sua finestra delle proprietà.

    Se hai un errore, come dicevi nel tuo post precedente, dovresti indicare di quale si tratta, "non va" non è sufficiente. Inoltre ho provato la sintassi ed il controllo viene correttamente valorizzato.

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




  9. #9
    L'avatar di attila666
    attila666 non è in linea Scolaretto
    Luogo
    roma
    Post
    52
    Allora, con questo codice
    codice:
    Sub copiasuword()
    folderpath = Application.ActiveWorkbook.Path 'Percorso File
    Stringa1 = Range("e2").Value
    Stringa2 = Range("f2").Value
    Dim sFILENAME As String
    Dim objdoc As Object
    sFILENAME = Application.ActiveWorkbook.Path & "\attestato di qualifica.docx"
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True
    Set wrdDoc = wrdApp.Documents.Open(sFILENAME)
    With wrdDoc
    .Bookmarks("cognome").Range.Text = Stringa1
    .Bookmarks("nome").Range.Text = Stringa2
    .objdoc.FormFields("prova").CheckBox.Value = True
    End With
    objdoc.FormFields("prova").CheckBox.Value = True
    ActiveDocument.SaveAs Filename:=folderpath & "\Repository\" & Stringa1 & ".docx"
    wrdApp.Quit
    End Sub
    restituisce: errore'438' Proprietà o metodo non supportati dall'oggetto

    se la metto al di fuori del blocco Whit mi dice: errore '91' Variabile oggetto o variabile del blocco whit non impostata
    Office 2010

  10. #10
    L'avatar di TheTruster
    TheTruster non è in linea Moderatore Globale Ultimo blog: Mouse Wheel in Visual Basic 6 - ActiveX
    Luogo
    Messina - Italy
    Post
    7,172
    Blogs
    3
    Sinceramente non capisco a cosa ti serva objDoc se hai già wrdDoc che rappresenta la variabile oggetto relativa al documento.
    la sintassi corretta dovrebbe essere questa:

    codice:
    With wrdDoc
        .Bookmarks("cognome").Range.Text = Stringa1
        .Bookmarks("nome").Range.Text = Stringa2
        .FormFields("prova").CheckBox.Value = True
    End With
    e, ovviamente, elimina la riga analoga fuori dal With...End With

    TheTruster
    Il Crossposting è vietato dalla Netiquette!




+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

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