C# - MS Word - MailMerge 如何在 MailMerge.DataSource.LastRecord returns -16 时获取最后一条记录

C# - MS Word - MailMerge how to get Last Record when MailMerge.DataSource.LastRecord returns -16

无法使用 MailMerge.DataSource.LastRecordMailMerge.DataSource.RecordCount 获取最后一条记录,第一个变量总是 returns -16,第二个变量总是 returns -1。



原因:
.LastRacord.RecordCount 是 returning -16 和 -1 因为我正在从 CSV 文件中读取数据。

解法: 以下代码将从 CSV 文件或文本文件中 return 最后一条记录或记录计数读取数据集。

public int GetMailMergeLastRecord()
 {
       Document doc = Globals.AddIn.ActiveDocument;      
       // for storing current record
       int currentRec = (int)doc.Mailmerge.DataSource.ActiveRecord;

       //getting the last Record
       int lastRecord = 1;
       doc.MailMerge.DataSource.ActiveRecord = (doc.MailMerge.DataSource.ActiveRecord - (int)doc.MailMerge.DataSource.ActiveRecord) + Int32.MaxValue;
       lastRecord =  (int)doc.MailMerge.DataSource.ActiveRecord;

       // resetting the current record as above line of codes will change the active record to last record.
       doc.MailMerge.DataSource.ActiveRecord = (doc.MailMerge.DataSource.ActiveRecord - (int)doc.MailMerge.DataSource.ActiveRecord) + currentRec;
       return lastRecord;
}

备注
以上代码为word应用级AddIn