Importare tabelle da word ad excel con procedura VBA

Anonimo
2015-08-31T12:14:18+00:00

Buongiorno a tutti,

su un file word contenente testo ho pure circa 200 tabelle (3 righe x 10 colonne).

Ognuna di esse sulla prima colonna (in alto a sinistra) riporta il numero della tabella e sulle rimanenti colonne gli anni relativi a tre diverse tipologie di effetti.

Il mio obiettivo è quello di importare la seconda e la terza riga delle diverse tabelle per tutte e dieci le colonne su un file excel mediante una procedura VBA.

Per facilitare il compito ho messo su Onedrive un file word contenente un esempio con sole 20 tabelle mentre sul file excel ho colorato di giallo il range su cui scrivere le informazioni delle venti matrici.

grazie a tutti,

Antonino

https://onedrive.live.com/?cid=dd405b0d5a6097c5&id=DD405B0D5A6097C5%21127

Files: Test_word e Test_excel

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

3 risposte

Ordina per: Più utili
  1. Anonimo
    2015-09-04T12:54:52+00:00

    Ho provato il codice precedentemente postato ma fallisce quando importo tabelle contenenti numeri che presentano oltre le tre cifre decimali.

    Ad esempio ho inserito su word una tabella di una riga e due colonne  scrivendo i seguenti importi 253,01 sulla prima cella e -253,011 sulla seconda.

    Eseguendo da excel la Sub ImportWordTable3()  mi viene restituito correttamente il primo valore con il formato generale mentre il secondo importo viene trasformato in -253.011 con il formato numerico.

    Avete qualche suggerimento grazie,

    A.

    Ho provato ad inserire il carattere apostrofo (codice 39 su  ASCII) davanti ad agni valore numerico presente sulla tabella word e viene restituito correttamente il formato generale per i valori importati sul foglio di lavoro excel.

    saluti,

    A.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-09-03T08:48:22+00:00

    Ho provato il codice precedentemente postato ma fallisce quando importo tabelle contenenti numeri che presentano oltre le tre cifre decimali.

    Ad esempio ho inserito su word una tabella di una riga e due colonne  scrivendo i seguenti importi 253,01 sulla prima cella e -253,011 sulla seconda.

    Eseguendo da excel la Sub ImportWordTable3()  mi viene restituito correttamente il primo valore con il formato generale mentre il secondo importo viene trasformato in -253.011 con il formato numerico.

    Avete qualche suggerimento grazie,

    A.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-09-01T09:36:41+00:00

    Buongiorno a tutti,

    su un file word contenente testo ho pure circa 200 tabelle (3 righe x 10 colonne).

    Ognuna di esse sulla prima colonna (in alto a sinistra) riporta il numero della tabella e sulle rimanenti colonne gli anni relativi a tre diverse tipologie di effetti.

    Il mio obiettivo è quello di importare la seconda e la terza riga delle diverse tabelle per tutte e dieci le colonne su un file excel mediante una procedura VBA.

    Per facilitare il compito ho messo su Onedrive un file word contenente un esempio con sole 20 tabelle mentre sul file excel ho colorato di giallo il range su cui scrivere le informazioni delle venti matrici.

    grazie a tutti,

    Antonino

    https://onedrive.live.com/?cid=dd405b0d5a6097c5&id=DD405B0D5A6097C5%21127

    Files: Test_word e Test_excel

    Buongiorno a tutti,

    cercando sulla rete ho trovato il seguente codice e con qualche piccolo adattamento avrei per il momento risolto :-))

    saluti,

    Antonino

    ===

    Sub ImportWordTable3()

    'Import all tables to a single sheet

    Dim wdDoc As Object

    Dim wdFileName As Variant

    Dim TableNo As Integer 'table number in Word

    Dim iRow As Long 'row index in Word

    Dim jRow As Long 'row index in Excel

    Dim iCol As Integer 'column index in Excel

    wdFileName = Application.GetOpenFilename()

    If wdFileName = False Then Exit Sub '(user cancelled import file browser)

    Set wdDoc = GetObject(wdFileName) 'open Word file

    With wdDoc

        If wdDoc.tables.Count = 0 Then

            MsgBox "This document contains no tables", _

                vbExclamation, "Import Word Table"

        Else

            jRow = 0

            Sheets.Add after:=Sheets(Worksheets.Count)

            For TableNo = 1 To wdDoc.tables.Count

                With .tables(TableNo)

    'copy cell contents from Word table cells to Excel cells

                    For iRow = 1 To .Rows.Count

                        jRow = jRow + 1

                        For iCol = 1 To .Columns.Count

                            On Error Resume Next

                            ActiveSheet.Cells(jRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)

                            On Error GoTo 0

                        Next iCol

                    Next iRow

                End With

                jRow = jRow + 1

            Next TableNo

        End If

    End With

    Set wdDoc = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento