2016-10-28 12 views
0

テーブル内で複数の行を削除して挿入することはできますか?たとえば、210-560,10-11などのような行の範囲を削除したいとしましょう。以下の例のように1行で実行することは可能ですか、範囲を指定してループを作成する必要がありますか範囲を削除するには数字の?Excel.Interopテーブルから複数の行を削除して挿入する

C#

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.Delete(); 

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.InsertRowRange(); 

VBAのいずれかを使用すると、このような単純な方法を使用することが可能であるものの:

Rows("210:560").Delete 
Rows("11:12").EntireRow.Insert 

答えて

1

あなたがC#でVBAコードと同じをしたい場合は、単に書くことができます:

var ws = xlWorkBook.Worksheets["Sheet1"]; 
ws.Range["210:560"].Delete(); 
ws.Range["11:12"].Insert(); 

は、あなたも、一度に複数の行を指定することができます。

ws.Range["210:560,722:838,917:917"].Delete(); 
ws.Range["11:12,15:17,19:19"].Insert(); 

1行の場合は、上記のように2回の行番号を指定する必要があります。

行の文字列のサイズ制限は255文字です。あなたがこれより多くの行を一度に処理したい場合は、範囲の和集合を行う必要があります。このようなですから、例えば何か:

application.Union(ws.Range["2:5,7:8,9:9"], ws.Range["11:12,15:17,19:19"]).Delete(); 

(ただ、簡潔にするために、私は、この例では、任意の大きな文字列を示さなかったapplicationは現在Excel.Applicationのインスタンスである。。)

唯一のもの注意:コントロールパネルのWindowsの地域設定で指定されているリスト区切り記号を使用する必要があります。これは、アプリケーションをグローバルに、または未知のユーザー(ISVなど)に配信する場合に特に重要です。例えば。ドイツ語ユーザーの場合、デフォルトのリスト区切り文字は;であり、英語ユーザーの場合は,ではありません。もちろん、ユーザーが手動でほぼ何でも設定することができます。

あなたは、この使用してWindowsの地域設定から現在のリストの区切りを取得することができます。

var sep = (string)application.International[XlApplicationInternational.xlListSeparator]; 
関連する問題