ExcelのSheet2を表示したいのですが
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(Null,0));
Excelworkbook1.Sheets.Add(Null,Null,Null,Null,0);
ExcelWorksheet1.ConnectTo(ExcelWorkBook1.Worksheets['Sheet2'] as _Worksheet);
ExcelWorksheet1.Range['A1','A1'].Value := '123';
ExcelWorksheet1.Range['A1','A1'].Select;
で、「RangeクラスのSelectメソッドが失敗しました」のエラーが出ます。
ExcelWorkSheet1にはSheet2が関連付けされていますが
実際にはSheet4が選択されているようです。
予めSheet2を選択するようにすればエラーは出ないとおもいます。
あとExcel自体を表示した方が分かりやすいかと。
ExcelApplication1.Visible[0] := True; ※←必要に応じて追加
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(Null,0));
Excelworkbook1.Sheets.Add(Null,Null,Null,Null,0);
ExcelWorksheet1.ConnectTo(ExcelWorkBook1.Worksheets['Sheet2'] as _Worksheet);
ExcelWorksheet1.Select; ※←追加
ExcelWorksheet1.Range['A1','A1'].Value := '123';
ExcelWorksheet1.Range['A1','A1'].Select;
Ru様
早速のご教示ありがとうございました。うまくいきました。
省略しましたがVisibuleはTrueにしてありました。
もうひとつお教え願います。
このとき、「Sheet2のA2セルをアクティブ(書き込める状態)にする」
にはどうすれば良いのでしょうか?
よろしくお願いいたします。
パスワード等でロックがかかっていない限りは書き込めるはずですが・・・
それともF2キー押した後のセル内でカーソルが点滅している状態のことを言ってますか?その方法は申し訳ないですが私は知らないです。
Ru様
舌足らずで申し訳ありません。
新しくExcelを開いていますのでロックは掛かっておりません。
A2セルに黒枠がかかっている状態にしたいのです。
それだったらここ変更するだけでいいと思いますよ。
ExcelWorksheet1.Range['A1','A1'].Select;
↓
ExcelWorksheet1.Range['A2','A2'].Select;
Ru様 ありがとうございます。
ご指摘のとおりしていたのですが、フォーカスがExcelではなくFormのほうに
あったので、出来ていないと勘違いしていました。
Excelをクリックすると、A2に黒枠がありました。
因みに、フォーカスをExcelではなくFormのほうに移すにはどうすれば良い
のでしょうか?
このあたりが参考になるのかな?
https://www.petitmonte.com/bbs/answers?question_id=4252
Ru様
ありがとうございます。
せっかく教えていただいたのですが、少し難しすぎて。
もっと勉強します。
こっちのほうがいいのかな。
参考:ttp://park18.wakwak.com/~greenspace/dev-api/theapi/reference/setwinps.html
SetWindowPos(Handle,
HWND_TOP,
Left, Top, Width, Height,
SWP_SHOWWINDOW);
Ru様 すみません。質問に大きなミスをしていました。
「フォーカスをExcelではなくFormのほうに移すにはどうすれば良い
のでしょうか?」 ではなく
「フォーカスをFormではなくExcelのほうに移すにはどうすれば良い
のでしょうか?」 です。
SetWindowPosで出来るのならExcelのHandleはどうして取得するのですか?
よろしくお願いいたします。
API関数のFindWindow関数ではどうでしょう?
クラス名は『XLMAIN』です。
http://yokohama.cool.ne.jp/chokuto/advanced/function/FindWindow.html
Ru様
ありがとうございます。
FindWindowとSetForegroundWindow関数で上手くいきました。
いつもありがとうございます。
今後ともよろしくお願いいたします。
ツイート | ![]() |