web-dev-qa-db-ja.com

c#のExcel.Rangeオブジェクトでワークシートのすべてのセルを選択する方法は?

ExcelシートのすべてのセルをC#のExcel.Rangeオブジェクトで選択して、自動調整、境界線などを適用しようとしています。シート内にいくつかの結合セルがあります。

そうするための簡単なトリックはありますか?

17
Chethan

here から取得すると、ワークシート内のすべてのセルが選択されます。

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
12
SwDevMan81
public void refreshSheetColumsSize(Worksheet ws)
 {
    ws.get_Range("a1").EntireRow.EntireColumn.Select();         
 }
12
jocelyn
Excel.Range theRange = (Excel.Range)CurrentSheet.UsedRange;

この例では、CurrentSheetは、現在使用しているシートを格納した変数です。

10
ThunderGr

正式には、Excel.Worksheet.UsedRange.RowsおよびExcel.Worksheet.UsedRange.Columns。

実際にはバグが多く、開始行と開始列を減算する必要があります。最も近い正しい答えは次のとおりです。

   Public ReadOnly Property LastColumn() As Integer
        Get
            Return ExcelWorksheet.UsedRange.Columns.Count + _
                   ExcelWorksheet.UsedRange.Column - 1
        End Get
    End Property
    Public ReadOnly Property LastRow() As Integer
        Get
            Return ExcelWorksheet.UsedRange.Rows.Count + _
                   ExcelWorksheet.UsedRange.Row - 1
        End Get
    End Property

これは少なくとも使用されたすべてのセルを返します。 「もう少し」は、空白ではないセル(空ではない)やその他のランダムなものが原因である可能性があります。私が行った調査から、これは実行できる最高の方法です。

本当にすべてを選択したい場合は、

ExcelWorksheet.Activate()
ExcelWorksheet.Cells.Select()
3
smirkingman

私はしばらくExcel開発をしていませんが(Excel 2003)、コードに実装したいタスクを実行しながらマクロを記録すると、役立つ十分なポインタがあることにいつも気づきました。

この場合、すべてのセルを選択して自動調整すると、コードが得られます。

Sub Macro1()
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub

これは大まかに次のように変換されると思います。

((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit();

ここで、_sheetは使用しているワークシートのインスタンスです。 (未試験)

2
Dave

非常にクリーンで、Excel 2007で増加した行/列の数に依存しません。

シートがwsDataと呼ばれる変数にある場合:

wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count))
1
Chris

ワークシートのすべてのセルを検討するには、次のように記述します。

workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count]

OR

 workSheet.get_Range("A1","IV65536")

ワークシートの使用済みセルを検討するには、次のように書くことができます。

workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)

「ワークシート」は、作業中のシートを表します。どちらのコードサンプルも範囲を返します。

それが役に立てば幸い!

1
NeverHopeless
worksheet.Columns.AutoFit()

「worksheet」はタイプの変数です Worksheet

0
pmartin

非常に簡単:

xlWorkSheet.UsedRange.Columns.Select()
0
Lev Z
        xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit();
        xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit();

セル充填完了後。

0
user6117410