J'obtiens l'erreur ci-dessus lorsque j'essaie d'exécuter ces macros. Je suis assez nouveau sur les macros et le codage en général, alors pardonnez l'ignorance.
Merci
Sub DeleteEmptyRows()
Dim oTable As Table, oRow As Row, _
TextInRow As Boolean, i As Long
Application.ScreenUpdating = False
For Each oTable In ActiveDocument.Tables
For Each oRow In oTable.Rows
TextInRow = False
For i = 2 To oRow.Cells.Count
If Len(oRow.Cells(i).Range.Text) > 2 Then
'end of cell marker is actually 2 characters
TextInRow = True
Exit For
End If
Next
If TextInRow = False Then
oRow.Delete
End If
Next
Next
Application.ScreenUpdating = True
End Sub
Votre erreur est due à ceux-ci:
Dim oTable As Table, oRow As Row,
Ces types, Table
et Row
ne sont pas des types variables natifs d'Excel. Vous pouvez résoudre ce problème de deux manières:
Dim oTable as Word.Table, oRow as Word.Row
. C'est ce qu'on appelle la liaison anticipée. Object
type: Dim oTable as Object, oRow as Object
. Avec cette méthode, vous n'avez pas besoin d'ajouter la référence à Word, mais vous perdez également l'aide d'intellisense dans le VBE.Je n'ai pas testé votre code mais je pense que ActiveDocument
ne fonctionnera pas dans Excel avec la méthode # 2, à moins que vous ne l'étendiez correctement à une instance d'un objet Word.Application. Je ne vois cela nulle part dans le code que vous avez fourni. Un exemple serait comme:
Sub DeleteEmptyRows()
Dim wdApp as Object
Dim oTable As Object, As Object, _
TextInRow As Boolean, i As Long
Set wdApp = GetObject(,"Word.Application")
Application.ScreenUpdating = False
For Each oTable In wdApp.ActiveDocument.Tables
Je suis en retard pour la fête. Essayez de remplacer comme ci-dessous, le mien a parfaitement fonctionné - "DOMDocument" à "MSXML2.DOMDocument60" "XMLHTTP" à "MSXML2.XMLHTTP60"