Поскольку вы запускаете это в Word, VBA только «знает» вещи, которые принадлежат объектной модели Word , если только в коде не указано, что другая объектная модель является источником.Word ничего не знает о «Sheets» - только Excel знает, что такое ActiveSheet
.
Даже если код, который вы нам показываете, не вызывает процедуру PrintFirstColumnOnActiveSheetToSheetName()
, где используется ActiveSheet
, VBA видит , когда компилирует код.Поэтому вам нужно передать ссылку на приложение Excel в эту процедуру и использовать ее.Например:
Public Sub PrintFirstColumnOnActiveSheetToSheetName(objExcel as Object)
objExcel.ActiveSheet.Name = objExcel.ActiveSheet.Range("A1")
End Sub
Для вызова этого в другом месте вашего кода это будет выглядеть примерно так:Обратите внимание, что имена переменных для одного и того же объекта не обязательно должны быть одинаковыми в разных процедурах - они могут быть, но это не обязательно.VBA «помнит», что приложение Excel, запущенное ранее, было передано другой процедуре.
PrintFirstColumnOnActiveSheetToSheetName objExcelApp