ОШИБКА: свойство let процедуры не определено, а свойство get процедуры не возвращало объект vba. А вот соответствующий код:
namespace Entities
{
[Guid("E65658F2-67C4-4F86-890C-62517EFB19AC")]
[ComVisible(true)]
public interface IFieldTags
{
[DispId(-4)]
FieldTagsEnumerator GetEnumerator();
}
[Guid("472DDF54-E42D-4E6D-9D62-1507CDB2ED0A")]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ComVisible(true)]
public class FieldTags : IEnumerable, IFieldTags
{
private List<FieldTag> fieldTagsList;
internal FieldTags(Document document, Tools tools)
{
this.constants = tools.Constants;
this.document = document;
this.fieldTagsList = GetFieldtagList();
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)GetEnumerator();
}
public FieldTagsEnumerator GetEnumerator()
{
return new FieldTagsEnumerator(this.fieldTagsList);
}
}
public class FieldTagsEnumerator : IEnumerator
{
private readonly List<FieldTag> fieldTagsCollection;
private int position = -1;
public FieldTagsEnumerator(List<FieldTag> fieldTagsList)
{
fieldTagsCollection = fieldTagsList;
}
}
}
Сгенерированный .tlb с использованием RegAsm.exe и Attached Entities.tlb для VBA
В VBA:
Dim objFieldTags As Entities.IFieldTags
// returns FieldTags type object in c#
Set objFieldTags = objDocument.GetNewRange(WordDocument.Range).FieldTags
For Each obj In objFieldTags
Для каждой причины ошибки, Правильна ли эта методология? как я могу использовать FieldTags в al oop?