Excelに最下行取得が有るが、最右列取得は無いっぽい。あれば便利なのではないかと。
下記に記載のような感じに修正(追加)することでわりと他の動作に影響せずに追加できそうです。もっとも、ソースが修正されても、リリースが無いと意味は無いんですが・・・
あとは、ふと、あちこちに最大列番号/最大行番号を直接埋め込んで書かれているので、最近の環境でははうまく動かなかったりとかが気になっています。
(このソースで言うと、'IV'というのがマジックナンバーで256列目の意味。Excel2007では16384列ありますから、おそらくは正しく動作しません。当方は2003のため、うまく行かないのかどうかは未確認。)
■dll_office_function.pasの適切な箇所に以下を追加
function excel_getLastCol(h: DWORD): PHiValue; stdcall;
var
row: string;
v: PHiValue;
begin
v := nako_getFuncArg(h, 0);
if v = nil then
begin
row := '1';
end else
begin
row := hi_str(v);
end;
Result := hi_newInt(excel.getLastCol(row));
end;
AddFunc ('エクセル最右列取得','{=1}ROWの|ROWで', ???, excel_getLastCol,'Excelの行番号ROW(123..で指定)の最右列を調べて返す。','えくせるさいうれつしゅとく');
■unit_office.psaの適切な箇所に以下を追加
function getLastCol(col:string):Integer;
xlToLeft = -4159;
function TKExcel.getLastCol(row: string): Integer;
var
v1, v2:Variant;
begin
E_WorkSheet := E_Application.ActiveSheet;
v1 := E_WorkSheet.Range['IV' + row];
v2 := v1.End[xlToLeft];
Result := v2.column;
v1 := Unassigned;
v2 := Unassigned;
end;
# AddFuncの番号はどう管理・採番しているのか不明・・・