0
私は500のハイパーリンクを追加するワークシートを持っており、この処理には約90秒かかります。私は部分的には、Microsoft Interop Excelを使用することが強制されていることと、部分的にはfor loop
を使用することが原因であることを知っていますが、そのような高速化/効率化の方法が必要です。これは現在の構文ですハイパーリンクの追加の最適化構文
public static void AddThatHyper()
{
long lr, i;
string cellVal;
WS = xlApp.ActiveWorkbook.ActiveSheet;
lr = WS.Cells[WS.Rows.Count, 2].End(Excel.XlDirection.xlUp).Row;
for (i = 2; i <= lr; i++)
{
Object Anchor = WS.Cells[i, 9];
Object TextToDisplay = Convert.ToString(WS.Cells[i, 9]);
cellVal = WS.Cells[i, 1].Value;
cellVal = cellVal.Substring(0, Math.Min(28, cellVal.Length));
rangeToHoldHyperlink = WS.Range["I" + i];
if (cellVal.Contains("&") ||
cellVal.Contains(",") ||
cellVal.Contains("-") ||
cellVal.Contains(".")
)
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + "CR " + cellVal + "'!A1", "", TextToDisplay);
}
if (cellVal.Contains("'"))
{
cellVal = cellVal.Replace("'", "''");
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + "CR " + cellVal + "'!A1", "", TextToDisplay);
}
else
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + "FR " + cellVal + "'!A1", "", TextToDisplay);
}
}
}
この構文を最適化し、より高速な時間枠で完了させるには、ここで何ができますか?
問題は、セルに個別に読み書きしようとしていることです。実行時間を短縮する最善の方法は、すべての値を範囲として読み取り、これらを配列に格納することです。その後、これを操作して、範囲全体の値を設定します。したがって、プログラムしているCOM呼び出しの量を減らす必要があります。この質問を見てください:http://stackoverflow.com/questions/6846958/optimized-way-of-adding-multiple-hyperlinks-in-excel-file-with-c-sharp?rq=1。 – Seunhaab
@セウナハブ - そのオプションは機能するかもしれませんが、それを達成する方法は不明です。サンプル構文を提供できますか?これらの回答のURL設定は、URLとは異なる3つの条件があるため、私とは異なります。 –