web-dev-qa-db-ja.com

OpenOfficeCalcの行と列の数を制限する

OpenOffice Calcのシートに表示される行と列の数を制限する方法はありますか?

必要な領域の外側に行と列を手動で非表示にすることにしましたが、これは面倒であり、オートフィルターを使用するとリセットされます。

ユーザーごとまたはインストールごとの設定ではなく、シートごとの設定を探していることに注意してください。

Excelでは、これを行うための非常に回りくどい方法があるようですが、OpenOfficeに相当するものを見つけることができませんでした: http://spreadsheets.about.com/od/excelformulas/ss/2011- 05-14-Excel-2010-limit-rows-tutorial.htm

1
dovetalk

利用可能なさまざまな回避策の中で、行と列を非表示にするのが最善のように思えます。これを自動的に実行するサブルーチンは次のとおりです。

Sub HideRowsAndColumns(iLastVisibleRow As Integer, iLastVisibleCol As Integer)
    oController = ThisComponent.CurrentController
    oSheet = oController.ActiveSheet
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.Sun.star.frame.DispatchHelper")
    oCellRange = oSheet.getCellRangeByPosition(_
        0, iLastVisibleRow, 0, oSheet.Rows.Count - 1)
    oController.select(oCellRange)
    dispatcher.executeDispatch(document, ".uno:HideRow", "", 0, Array())
    oCellRange = oSheet.getCellRangeByPosition(_
        iLastVisibleCol, 0, oSheet.Columns.Count - 1, 0)
    oController.select(oCellRange)
    dispatcher.executeDispatch(document, ".uno:HideColumn", "", 0, Array())
    oCellRange = oSheet.getCellRangeByPosition(0, 0, 0, 0)
    oController.select(oCellrange)
End Sub

たとえば、ドキュメントを開いたときに次のルーチンを呼び出すことができます(Tools -> Customize -> Events):

Sub DoHideRowsAndCols
    HideRowsAndColumns(20,10)
End Sub

LibreOfficeでは、AutoFilterは行を再表示しませんでした。ただし、ApacheOpenOfficeでは実行されました。したがって、AOOの場合、AutoFilterを実行した後、ルーチンを再度呼び出す必要があります。

別の方法は、セルを非表示にする代わりに、編集されないようにセルを保護することです。 https://ask.libreoffice.org/en/question/17106/is-it-possible-to-impose-a-limit-columns-and-rows-on-spreadsheet-size/ を参照してください。 。

イベントハンドラーを追加して、特定の行を超えてスクロールしないようにすることができる場合があります。スプレッドシートイベントハンドラーの例については、 https://stackoverflow.com/questions/35240690/how-to-scroll-all-libreoffice-calc-spreadsheet-sheets-together-or-other-3d-)を参照してください。 li/35244220#3524422

しかし、そのようなハンドラーを追加することは、ユーザーにとって非常に苛立たしいことだと思います。セルをクリックして何も起こらないようにするか、ビューが突然元のビューにスクロールして戻る可能性があります。

1
Jim K