Мне нужно найти файл Excel для конкретного текста.
Я нашел эту статью в MS. https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-search-for-text-in-worksheet-ranges?view=vs-2019 Я изменил его для поиска по всей книге. Работает нормально, пока не останется только один лист с поисковым значением. Если какой-либо другой лист также имеет значение, то Excel зависает с указателем песочных часов. В конечном итоге мне нужно убить процесс.
Вот мой код:
public int searchcount(string srchtrm)
{
Excel.Range currentFind = null;
Excel.Range firstFind = null;
int stcount = 0;
foreach (Excel.Worksheet w in Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets)
{
w.Select();
Excel.Range Fruits = w.UsedRange;
currentFind = Fruits.Find(srchtrm, Type.Missing,
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByRows, Excel.XlSearchDirection.xlNext, false,
Type.Missing, Type.Missing);
while (currentFind != null)
{
if (firstFind == null)
{
firstFind = currentFind;
}
else if (currentFind.get_Address(Excel.XlReferenceStyle.xlA1)
== firstFind.get_Address(Excel.XlReferenceStyle.xlA1))
{
break;
}
currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
currentFind.Font.Bold = true;
currentFind = Fruits.FindNext(currentFind);
stcount = stcount + 1;
}
}
return stcount;
}