Condividi:        

dati da Word a excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

dati da Word a excel

Postdi giostacchio » 04/11/16 11:20

domandone
come posso spostare dati da una tabella xls ad un modulo precompilato di word ?
con una macro o altro modo ?

vi ringrazio

link ai due file

https://www.wetransfer.com/downloads/3c ... 927/fca4f5

:)
giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Sponsor
 

Re: dati da Word a excel

Postdi giostacchio » 04/11/16 13:44

ehm...in realtà sarebbe dati da Excel a word
scusate
giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Re: dati da Word a excel

Postdi Anthony47 » 05/11/16 03:06

Avevo tanto sperato che per "Modulo" intendessi dei "campi modulo", elementi del documento indirizzabili in modo diretto; mentre intendi "modulo tipo cartaceo"...
Credo che si possa fare, non mi e' chiaro pero' che cosa va dove; usando il file Excel che hai gia' pubblicato, puoi compilare a mano il "modulo" word cosi' si capisce come incrociare le caselle?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dati da Word a excel

Postdi giostacchio » 09/11/16 10:41

giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Re: dati da Word a excel

Postdi Anthony47 » 11/11/16 01:42

Quando vedo queste cose io mi chiedo perche' acquistiate licenze software se invece volete un tecnigrafo e un normografo.
In modo sperimentale ho calcolato che le intestazioni sono su riga2 mentre i valori sono su riga3, colonne 9:13, e pertanto suggerisco questa macro excel:
Codice: Seleziona tutto
Sub matTables()
Dim OBJWord As Object, OBJDoc As Object
Dim myFIle As String, SrcSh As Worksheet, I As Long
Dim aMats, aCols, myMatch, matRow As Long, cMat As String
'
myFIle = "C:\Users\PERCORSO\PMI - CERTIFICATE.doc"          '<<< Il file Word da leggere
Set SrcSh = ThisWorkbook.Sheets("Foglio1")      '<<< Il foglio di Excel da dove prelevare
matRow = 5                                      '<<< La riga con le intestazioni dei materiali
'
aMats = Array("Mn", "Cu", "W", "V", "Zr")
aCols = Array(9, 10, 11, 12, 13)
'
'Set OBJWord = New Word.Application                 'EARLY BINDING
Set OBJWord = CreateObject("Word.Application")     'LATE BINDING
'
OBJWord.Visible = True
Set OBJDoc = OBJWord.Documents.Open(Filename:=myFIle)
With OBJDoc.Tables(2)
    For I = LBound(aMats) To UBound(aMats)
        cMat = aMats(I)
        myMatch = Application.Match(cMat, Rows(matRow), 0)
        If Not IsError(myMatch) Then
            .Cell(2, aCols(I)).Range.Text = cMat
            .Cell(3, aCols(I)).Range.Text = Cells(matRow + 3, myMatch)
        End If
    Next I
    If InStrRev(Cells(4, 1), "SN", , vbTextCompare) > 0 Then
        .Cell(3, 2) = Mid(Cells(4, 1), InStr(1, Cells(4, 1), "Seat", vbTextCompare), _
            InStrRev(Cells(4, 1).Value, "SN", , vbTextCompare) - InStr(1, Cells(4, 1).Value, "Seat", vbTextCompare))
        .Cell(3, 1) = Mid(Cells(4, 1), InStrRev(Cells(4, 1), "SN", , vbTextCompare))
    End If
End With

MsgBox ("Controlla compilazione documento Word e salvalo con nuovo nome")
Stop

'Completato:
On Error Resume Next
OBJDoc.Close False
OBJWord.Quit
Set OBJWord = Nothing
On Error GoTo 0
End Sub

Ho immaginato che il file Word che viene aperto sia una specie di "modello" che viene compilato e deve essere salvato con un suo nome; quindi la macro si ferma su MessageBox per consentire la verifica del documento e il suo salvataggio; chiudendo il MessageBox il file word sara' chiuso e idem la sessione Word in cui il doc era stato lavorato.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dati da Word a excel

Postdi giostacchio » 11/11/16 07:26

ciao Anthony
ti ringrazio per la pazienza, anche se non ho capito bene cosa intendessi dire :eeh:
....e per la macro..
solo ho un problemino...ho inserito la macro in un pulsante per far partire la macro è corretto ?
anche perché ci ho provato ma mi restituisce questo tipo di errore.. vedi foto

https://www.wetransfer.com/downloads/43 ... 623/b40b7b
giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Re: dati da Word a excel

Postdi Anthony47 » 11/11/16 14:58

E' che quando vedo dei fogli disegnati per la tipografia e poi li si vuole riempire tramite Excel o Word mi viene sempre una leggera orticaria... ma andiamo avanti.

Ho dimenticato di dirti che quella e' una macro di Excel, va inserita nel file Excel che deve popolare il modulo :D

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dati da Word a excel

Postdi giostacchio » 11/11/16 16:53

allora pienamente d'accordo con te..
purtroppo non l'ho disegnato io quel file di word.

ma si può fare il contrario ? :-)
grazie
giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Re: dati da Word a excel

Postdi Anthony47 » 12/11/16 02:18

Se vuoi mettere la macro in word allora vanno invertiti i ruoli tra le applicazioni.
Prova con
Codice: Seleziona tutto
Sub WmatTables()
Dim ObjXL As Object, ObjWkb As Object, CopiaDa As String
Dim myFIle As String, SrcSh As Object, I As Long
Dim aMats, aCols, myMatch, matRow As Long, cMat As String
'
myFIle = "C:\Users\PERCORSO\Cartel1.xls"        '<<< Il file Excel da cui leggere
CopiaDa = "Foglio1"                             '<<< Il foglio Excel da cui leggere
matRow = 5                                      '<<< La riga con le intestazioni dei materiali
'
aMats = Array("Mn", "Cu", "W", "V", "Zr")
aCols = Array(9, 10, 11, 12, 13)
'
'Set ObjXL = New Excel.Application                 'EARLY BINDING
Set ObjXL = CreateObject("excel.Application")     'LATE BINDING
'
ObjXL.Visible = True
On Error Resume Next
Set ObjWkb = ObjXL.Workbooks.Open(FileName:=myFIle)
If ObjWkb Is Nothing Then
    MsgBox ("Impossibile aprire il file Excel; chiuderlo se gia' aperto e riprovare")
    GoTo Term
End If
Set SrcSh = ObjWkb.Sheets(CopiaDa)
With ThisDocument.Tables(2)
    For I = LBound(aMats) To UBound(aMats)
        cMat = aMats(I)
        myMatch = SrcSh.Application.Match(cMat, SrcSh.Rows(matRow), 0)
        If Not IsError(myMatch) Then
            .Cell(2, aCols(I)).Range.Text = cMat
            .Cell(3, aCols(I)).Range.Text = SrcSh.Cells(matRow + 3, myMatch)
        End If
    Next I
    If InStrRev(SrcSh.Cells(4, 1), "SN", , vbTextCompare) > 0 Then
        .Cell(3, 2).Range.Text = Mid(SrcSh.Cells(4, 1), InStr(1, SrcSh.Cells(4, 1), "Seat", vbTextCompare), _
            InStrRev(SrcSh.Cells(4, 1).Value, "SN", , vbTextCompare) - InStr(1, SrcSh.Cells(4, 1).Value, "Seat", vbTextCompare))
        .Cell(3, 1).Range.Text = Mid(SrcSh.Cells(4, 1), InStrRev(SrcSh.Cells(4, 1), "SN", , vbTextCompare))
    End If
End With

MsgBox ("Controlla compilazione documento Word rispetto a Excel")
Stop        '<<< Si potra' togliere quando confidenti che il risultato e' Ok

'Completato:
Term:
On Error Resume Next
ObjWkb.Close False
ObjXL.Quit
Set ObjXL = Nothing
Set ObjWkb = Nothing
On Error GoTo 0
End Sub

Come vedi dopo il Messagebox che suggerisce di controllare la cmpilazione del doc c'e' ora uno Stop, che facilita' il controllo; per completare la macro bisogna tornare sulla finestra del vba e premere F5, che chiude il file Excel e completa la chiusura. Quando sei confidente che il funzionamento e' Ok allora elimina la riga Stop.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: dati da Word a excel

Postdi giostacchio » 12/11/16 07:20

caspita sempre il top !
da quando ho scoperto questo forum, mi si è aperta una nuova porta al mondo ! spettacolare !
grazie ancora

solo quando avrai un paio di min da dedicarmi ancora ti chiedo se riesci a spiegarmi ogni riga..
buona giornata
giostacchio
Utente Junior
 
Post: 90
Iscritto il: 14/10/16 07:36

Re: dati da Word a excel

Postdi Anthony47 » 14/11/16 02:02

Realizzare un programma in un linguaggio vuol dire conoscere il linguaggio, individuare un processo logico che risolve il problema, tradurre quel processo in istruzioni. Qui posso solo commentare il risultato, non l'intero processo:
-Con Dim si dichiarano le variabili che saranno usate e il loro tipo
-Seguono 3 righe per indicare 3 parametri del problema
-Si crea poi una mappa di quale valore va in quale cella
-Si creano gli Oggetti Applicativo Excel e Workbook Excel
-Si controlla che il Workbook sia presente
-Si punta al foglio dichiarato
-Si punta alla Tabella N° 2 del doc word
-Si fa un ciclo di scan della mappa materiali e si posiziona Materiale e valore nella cella di word
-Si estraggono gli altri due campi e si posizionano nelle loro celle
-Messaggio di completamento
-Chiusura senza salvataggio del file Excel, chiusura della sessione Excel aperta, cancellazione delle variabili

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "dati da Word a excel":


Chi c’è in linea

Visitano il forum: Nessuno e 53 ospiti