Sheet2を表示するには。

解決


kikyo  2007-08-02 00:14:25  No: 27279

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メソッドが失敗しました」のエラーが出ます。


Ru  2007-08-02 00:55:47  No: 27280

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;


kikyo  2007-08-02 01:39:40  No: 27281

Ru様
早速のご教示ありがとうございました。うまくいきました。
省略しましたがVisibuleはTrueにしてありました。
もうひとつお教え願います。

このとき、「Sheet2のA2セルをアクティブ(書き込める状態)にする」

にはどうすれば良いのでしょうか?
よろしくお願いいたします。


Ru  2007-08-02 02:02:44  No: 27282

パスワード等でロックがかかっていない限りは書き込めるはずですが・・・

それともF2キー押した後のセル内でカーソルが点滅している状態のことを言ってますか?その方法は申し訳ないですが私は知らないです。


kikyo  2007-08-02 02:26:28  No: 27283

Ru様
舌足らずで申し訳ありません。
新しくExcelを開いていますのでロックは掛かっておりません。
A2セルに黒枠がかかっている状態にしたいのです。


Ru  2007-08-02 02:52:27  No: 27284

それだったらここ変更するだけでいいと思いますよ。

ExcelWorksheet1.Range['A1','A1'].Select;
  ↓
ExcelWorksheet1.Range['A2','A2'].Select;


kikyo  2007-08-02 18:16:24  No: 27285

Ru様  ありがとうございます。

ご指摘のとおりしていたのですが、フォーカスがExcelではなくFormのほうに
あったので、出来ていないと勘違いしていました。
Excelをクリックすると、A2に黒枠がありました。

因みに、フォーカスをExcelではなくFormのほうに移すにはどうすれば良い
のでしょうか?


Ru  2007-08-02 19:18:53  No: 27286

このあたりが参考になるのかな?
https://www.petitmonte.com/bbs/answers?question_id=4252


kikyo  2007-08-02 20:43:55  No: 27287

Ru様
ありがとうございます。
せっかく教えていただいたのですが、少し難しすぎて。
もっと勉強します。


Ru  2007-08-02 22:19:46  No: 27288

こっちのほうがいいのかな。

参考:ttp://park18.wakwak.com/~greenspace/dev-api/theapi/reference/setwinps.html

    SetWindowPos(Handle,
                 HWND_TOP,
                 Left, Top, Width, Height,
                 SWP_SHOWWINDOW);


kikyo  2007-08-03 02:33:56  No: 27289

Ru様  すみません。質問に大きなミスをしていました。

「フォーカスをExcelではなくFormのほうに移すにはどうすれば良い
のでしょうか?」    ではなく

「フォーカスをFormではなくExcelのほうに移すにはどうすれば良い
のでしょうか?」    です。

SetWindowPosで出来るのならExcelのHandleはどうして取得するのですか?

よろしくお願いいたします。


Ru  2007-08-03 17:20:27  No: 27290

API関数のFindWindow関数ではどうでしょう?
クラス名は『XLMAIN』です。

http://yokohama.cool.ne.jp/chokuto/advanced/function/FindWindow.html


kikyo  2007-08-03 19:10:24  No: 27291

Ru様

ありがとうございます。

FindWindowとSetForegroundWindow関数で上手くいきました。

いつもありがとうございます。

今後ともよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加