Ошибка 438 для VBA Word при использовании .selectrow, VBA не восстанавливает открытый Word? - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь манипулировать таблицами Word из Excel.Общая проблема, с которой я сталкиваюсь, уже решена Microsoft здесь:

https://docs.microsoft.com/en-us/office/vba/word/concepts/customizing-word/error-accessing-a-table-row-or-column

tldr: Объединенные ячейки в таблицах Word требуют обходного пути, чтобы выбрать целые строки для удаления.

Я использовал и настроил следующий фрагмент кода:

Sub RemoveTableBorders() 
    ActiveDocument.Tables(1).Cell(1, 1).Select 
    With Selection 
        .SelectRow 
        .Cells.Borders.Enable = False 
    End With 
End Sub

Однако я получаю ошибку 438, указывающую на команду .SelectRow.VBA говорит мне, что это недопустимая команда для объекта.Такое ощущение, что когда я использую команду With Selection, Excel не распознает, что я пытаюсь записать слово, поскольку .selectrow - это команда Word.Поэтому я пытаюсь включить в указатель еще один указатель:

Sub RemoveTableBorders() 
    ActiveDocument.Tables(1).Cell(1, 1).Select 
    With ActiveDocument.Selection 
       .SelectRow 
       .Cells.Borders.Enable = False 
    End With 
End Sub

Я не могу предоставить воспроизводимый код.

Я думаю, что ответ на следующий вопрос также решает мою проблему: если у меня есть два открытых экземпляра программ Office, как я могу определить, каким выбором (Excel или Word) следует манипулировать?

1 Ответ

0 голосов
/ 22 октября 2018

Ошибка действительно заключалась в том, что VBA не переделала выбор слов.Со следующей настройкой в ​​вызове С работает код:

Sub RemoveTableBorders() 
    ActiveDocument.Tables(1).Cell(1, 1).Select 
    With Word.application.selection
        .SelectRow 
        .Cells.Borders.Enable = False 
    End With 
End Sub

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...