Comment préserver la mise en forme source lors de la copie de données à partir de word tableau à feuille excel à l'aide de visual basic de macro?

Je suis en train de copier des données à partir d'un tableau word à une feuille excel à l'aide d'une Macro VB.

C'est de copier le texte à la perfection comme souhaité.

Maintenant, je veux préserver la mise en forme source présent dans word doc.

Les choses que je veux préserver sont

  1. La Grève Par Le Biais
  2. Couleur
  3. Balles
  4. Caractère De Nouvelle Ligne

J'utilise le code suivant pour copier -

objTemplateSheetExcelSheet.Cells(1, 2) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)

Bien vouloir me faire savoir comment je peux modifier cela afin de préserver la mise en forme source.

La logique que j'utilise est comme suit -

wdFileName = Application.GetOpenFilename("Word files (*.*),*.*", , _
"Browse for file containing table to be imported") '(Browsing for a file)

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

Set wdDoc = GetObject(wdFileName) '(open Word file)

With wdDoc
    'enter code here`
    TableNo = wdDoc.tables.Count '(Counting no of tables in the document)
    If TableNo = 0 Then
        MsgBox "This document contains no tables", _
        vbExclamation, "Import Word Table"
    End If
End With

Je suis en cours d'exécution d'une table compter sur le fichier word. Alors pour toutes les tables présentes dans la doc word accéder à chaque ligne et chaque colonne de la table à l'aide du code mentionné ci-dessus.

Ok je joins le morceau restant de code ainsi

'Creating TemplateSheet object
Set objTemplateSheetExcelApp = CreateObject("Excel.Application")
'Opening the template to be used
objTemplateSheetExcelApp.Workbooks.Open ("C:\Temp\Documents Page XX_US-VC Combo Template.xlsx")
Set objTemplateSheetExcelWkBk = objTemplateSheetExcelApp.ActiveWorkbook.Worksheets(5)
Set objTemplateSheetExcelSheet = objTemplateSheetExcelApp.ActiveWorkbook.Worksheets(5) '(Selecting the desired tab)
tblcount = 1
For tblcount = 1 To TableNo
With .tables(tblcount)
'copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.Count
For iCol = 1 To .Columns.Count
On Error Resume Next
strEach = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
For arrycnt = 0 To 15
YNdoc = InStr(strEach, myArray(arrycnt))
If (YNdoc > 0) Then
objTemplateSheetExcelSheet.Cells(2, yourArray(arrycnt)) = _
WorksheetFunction.Clean(.cell(iRow, iCol + 1).Range.Text)
If arrycnt = 3 Or arrycnt = 6 Then
objTemplateSheetExcelSheet.Cells(2, yourArray(arrycnt) + 1) = _
WorksheetFunction.Clean(.cell(iRow + 1, iCol + 1).Range.Text)
End If
End If
Next arrycnt
Next iCol
Next iRow
End With
Next tblcount
End With
intRow = 1
'To save the file
strFileName = "Newfile.xlsx"
objTemplateSheetExcelWkBk.SaveAs strFld & "\" & strFileName
objTemplateSheetExcelApp.Quit
Set objTemplateSheetExcelApp = Nothing
Set objTemplateSheetExcelWkBk = Nothing
Set objTemplateSheetExcelSheet = Nothing
Set wdDoc = Nothing
  • Comment êtes-vous de la copie à partir de word?
  • J'ai ajouté ma logique, au-dessus de lui-même.
  • Le code ci-dessus ne comprend pas le code pour la copie?
  • J'ai édité le fichier contenant le code entier maintenant. La ligne "WorksheetFunction.Propre(.cellule(iRow, iCol).Gamme.Texte)" est le principal code pour copier les données à partir de word.
  • Tu fais ça à partir de VBA Excel ou Word en VBA?
  • Excel VBA......
  • Dans ce cas, vous êtes vraiment faire ça de manière très complexe. Permettez-moi de poster une réponse avec un exemple. Donne-moi un peu de temps. Ce sera un très long post...
  • Assurez-vous. Merci pour cela.
  • Ouf!! Fait 🙂 laissez-moi savoir si vous avez encore des problèmes.

InformationsquelleAutor user1643371 | 2012-09-03