1

Я написал макрос в WinWord2007, в котором перечислены стили и их свойства в таблице Excel. Таблица сделана доступной следующими 3 строками:

Dim Oxl_Sheet As Object
Set Oxl_Sheet = CreateObject("Excel.Sheet")
Oxl_Sheet.Application.Visible = True

Я могу без проблем записать в отдельные ячейки таблицы, например:

Oxl_Sheet.Application.Cells(iRow, 2).Value = ActiveDocument.Styles.(iStyle).NameLocal

Теперь я хотел бы отсортировать заполненную таблицу из того же макроса Word, но я оказался совершенно не в состоянии это сделать. В следующей строке, например:

Oxl_Sheet.Application.Sort.SortFields.Add Key:=Range("I2:I356"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

компилятор жалуется, что подфункция / диапазон "Range" не была определена.

Кто-нибудь может дать мне подсказку?

1 ответ1

0

Несколько изменений должны заставить вас работать:

1) Если вы хотите сохранить лист Excel вне макроса, переместите строку:

Dim Oxl_Sheet As Object

наверх страницы макроса, вне какой-либо функции.

2) Чтобы исправить ошибку компиляции, включите ссылку на библиотеку Excel, чтобы определить функцию диапазона:

  • В редакторе VBA «Инструменты» -> «Ссылки ...»'
  • Выберите «Microsoft Excel <12.0 или 14.0> Библиотека объектов».

3) Измените синтаксис строки сортировки, чтобы определить, к какому объекту относится диапазон:

Oxl_Sheet.Заявка.Сортировать.SortFields.Добавить ключ:= Oxl_Sheet.Заявка.Диапазон («I2:I356»), SortOn:= xlSortOnValues

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .