使用 C# 使用范围搜索时 Word 文件中'Value out of range'错误



我使用下面的代码,它非常擅长在首页复制和粘贴。但是,当应用具有2页或更多页的文档时,错误代码为"值超出范围"。下面是我的代码。请帮忙,我只是第一次学习!!

for (int i = 1; i < docs.Paragraphs.Count; i++)
{
progressBar1.Value = i;
string a = docs.Paragraphs[i].Range.Text.ToString();
string b = "SINH HOẠT DƯỚI CỜ";
if (string.Compare(a.Trim(), b.Trim(), true) == 0)// kiểm tra dòng này có thuộc tiêu đề kia không
{
var d1 = docs.Content.Paragraphs[i].Range;// chọn phạm vi khi điều kiện hợp lệ
Range d2 = docs.Content;// chọn phạm vi cuối cùng
d1.Find.Execute(b);// tìm kiếm tên trong phạm vi đó
d2.Find.Execute("- Phương pháp vấn đáp, động não, thực hành, thảo luận nhóm.");
Range range1 = docs.Range(d1.Start, d2.End);// System.Runtime.InteropServices.COMException: 'Value out of range'
range1.Copy();
rtbsoanthao.Paste();
}
}

多亏了Fildor,我找到了答案。非常感谢。当然,我没有注意到最后一行范围内的索引。已经是我的代码了。它工作得很好。根据word文件的要求进行复制,由您自行决定。

for (int i = 1; i < docs.Paragraphs.Count; i++)
{
progressBar1.Value = i;                   
string a = "tập đọc";
string b = docs.Paragraphs[i].Range.Text.ToString();
if (string.Compare(a.Trim(), b.Trim(), true) == 0)// kiểm tra dòng này có thuộc tiêu đề kia không
{                      
for (int j = i; j < docs.Paragraphs.Count; j++)
{
string c = "---------------------------------------------------- ";
string d = docs.Paragraphs[j].Range.Text.ToString();
if (string.Compare(c.Trim(), d.Trim(), true) == 0)
{
Range d1 = docs.Content.Paragraphs[i].Range;
Range d2 = docs.Content.Paragraphs[j].Range;
d1.Find.Execute(a);
d2.Find.Execute(c);
Range range1 = docs.Range(d1.Start, d2.End);
range1.Copy();
rtbsoanthao.Paste();
break;
}
}
}                
}

相关内容

最新更新