Home of site/JavaScript Macro for Calc

Macroの杜(JavaScript編)

< 戻る 【 Calc 】

JsSelection-01)[Calc]Cell、Column、Rowを選択状態にする
【Movie】実行結果
任意の範囲を選択状態にする場合は
  com.sun.star.view.XSelectionSupplier / 
 .select()
を使う。

Cellの範囲設定
	com.sun.star.sheet.XSpreadsheet
	getCellRangeByName

列やRownの指定は
	com.sun.star.table.XColumnRowRange
	.getColumns().getByIndex()
	.getRows().getByIndex()

以下のコードでは間に1secの待機時間を設けて、
目視確認できるようにしている。

//Select Cell and Colomn and Row
importClass(Packages.com.sun.star.chart.XChartData);
importClass(Packages.com.sun.star.container.XNamed);
importClass(Packages.com.sun.star.frame.XController);
importClass(Packages.com.sun.star.frame.XModel);
importClass(Packages.com.sun.star.sheet.XSpreadsheetView);
importClass(Packages.com.sun.star.uno.UnoRuntime);
importClass(Packages.javax.swing.JOptionPane);

importClass(Packages.com.sun.star.view.XSelectionSupplier);

importClass(Packages.com.sun.star.sheet.XSpreadsheet);
importClass(Packages.com.sun.star.table.XColumnRowRange);

importClass(Packages.java.lang.Thread);
try{
	xSheetComponent = XSCRIPTCONTEXT.getDocument();
	xModel = UnoRuntime.queryInterface(XModel, xSheetComponent);
	xController = xModel.getCurrentController();
	
	xSpreadsheetView = UnoRuntime.queryInterface(XSpreadsheetView, xController);
	xSpreadsheet = xSpreadsheetView.getActiveSheet();
	
	oSel = UnoRuntime.queryInterface(XSelectionSupplier, xController);

	//Select Cells
	oRng = UnoRuntime.queryInterface(XSpreadsheet, xSpreadsheet);
	oRange = oRng.getCellRangeByName( "A1:A5" );
	oSel.select(oRange)

	Thread.sleep(1000); // 1sec

	//Select Column
	oRng = UnoRuntime.queryInterface(XColumnRowRange, xSpreadsheet);
	oRange = oRng.getColumns().getByIndex(1);  // B Colum
	oSel.select(oRange)

	Thread.sleep(1000); // 1sec

	//Select Row
	oRng = UnoRuntime.queryInterface(XColumnRowRange, xSpreadsheet);
	oRange = oRng.getRows().getByIndex(2);  // No.3 Row
	oSel.select(oRange)

	JOptionPane.showMessageDialog(null, "Success\n(LO7.2.5.2)");
}catch(e){
	//Error Handling
		errorname = e.name;
		errormsg = e.message;
		eDisp= errorname + "\n" + errormsg;
	JOptionPane.showMessageDialog(null, eDisp);
}
【Movie】実行結果
 
 複数の列やRownの指定指定する時は

	com.sun.star.sheet.XSpreadsheet
 
	列 : .getCellRangeByName("B:C")

	行 : .getCellRangeByName("2:4")

 にて指定可能。	
//Select Cell and Colomn and Row importClass(Packages.com.sun.star.chart.XChartData); importClass(Packages.com.sun.star.container.XNamed); importClass(Packages.com.sun.star.frame.XController); importClass(Packages.com.sun.star.frame.XModel); importClass(Packages.com.sun.star.sheet.XSpreadsheetView); importClass(Packages.com.sun.star.uno.UnoRuntime); importClass(Packages.javax.swing.JOptionPane); importClass(Packages.com.sun.star.view.XSelectionSupplier); importClass(Packages.com.sun.star.sheet.XSpreadsheet); importClass(Packages.java.lang.Thread); try{ xSheetComponent = XSCRIPTCONTEXT.getDocument(); xModel = UnoRuntime.queryInterface(XModel, xSheetComponent); xController = xModel.getCurrentController(); xSpreadsheetView = UnoRuntime.queryInterface(XSpreadsheetView, xController); xSpreadsheet = xSpreadsheetView.getActiveSheet(); oSel = UnoRuntime.queryInterface(XSelectionSupplier, xController); //Select Columns oRng = UnoRuntime.queryInterface(XSpreadsheet, xSpreadsheet); oRange = oRng.getCellRangeByName( "B:C" ); oSel.select(oRange) Thread.sleep(1000); // 1sec //Select Rows oRng = UnoRuntime.queryInterface(XSpreadsheet, xSpreadsheet); oRange = oRng.getCellRangeByName("2:4"); oSel.select(oRange) JOptionPane.showMessageDialog(null, "Success\n(LO7.2.5.2)"); }catch(e){ //Error Handling errorname = e.name; errormsg = e.message; eDisp= errorname + "\n" + errormsg; JOptionPane.showMessageDialog(null, eDisp); }
inserted by FC2 system