Его необходимо преобразовать из Variant
в Object
, но все, что я прочитал на эту тему в Интернете, говорит о том, что вы не можете преобразовать Variant
в Object
в VBA.
Ваши альтернативы - придерживаться использования Variant
во всех местах (вместо объекта Document
) или придерживаться использования Object
во всех местах, так как они оба предоставляют функциональность, необходимую в этом примере .
Так что либо измените его на этот (для использования метода варианта):
Function GetTextTbl(Tbl As Table, Doc As Variant, Tn As String) As Boolean
Или измените оба на этот (для использования метода объекта):
Dim Sfs() As Object
Function SetSfs(Sfs() As Object) As Long
Использование его как Object
во всех случаях имеет для меня наибольшее значение, так как тогда вы можете использовать исходное объявление вашей функции GetTextTbl
как:
Function GetTextTbl(Tbl As Table, Doc As Document, Tn As String) As Boolean
И затем ваш intellisense будет работать внутри этой функции. Просто убедитесь, что вы не передаете ему объект, отличный от документа Word, иначе вы получите ошибку.