C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: エクセルの入力待ち状態を解除したいのですが


(過去ログ 89 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■52932 / inTopicNo.1)  エクセルの入力待ち状態を解除したいのですが
  
□投稿者/ かずき (59回)-(2010/08/29(Sun) 21:45:26)

分類:[VB.NET/VB2005 以降] 

お世話になります。VB初心者です。

エクセルの上部にある入力ボックス(すみません、正式名はわかりません。画面のマス目ではないところです。)にカーソルが入った状態から、カーソルを出したいのですがどうして良いかわかりません。

セルを移動させれば良いかと思い、セルを移動させたのですが、入力ボックスに入ったカーソルはそのままの状態です。

Dim xlapp As Excel.Application = New Excel.Application
上記でxlappを取得後に、入力ボックスにカーソルを入れ、下記Testを呼び出しました。

Private Sub Test
  Dim ActSheet As Excel.Worksheet = xlapp.ActiveSheet
Dim Range As Excel.Range = ActSheet.Cells(1, 1)

Range.Select() 'セルは移動するのですが・・・

System.Runtime.InteropServices.Marshal.ReleaseComObject(Range)
System.Runtime.InteropServices.Marshal.ReleaseComObject(ActSheet)
End Sub

カーソルを入力ボックスから出すにはどのようにすれば良いのでしょうか。
どなたかご教示をお願いします。

引用返信 編集キー/
■52933 / inTopicNo.2)  Re[1]: エクセルの入力待ち状態を解除したいのですが
□投稿者/ 魔界の仮面弁士 (1775回)-(2010/08/29(Sun) 22:38:14)
No52932 (かずき さん) に返信
> エクセルの上部にある入力ボックス(すみません、正式名はわかりません。
『数式バー』の事でしょうか。それとも、その左の『名前ボックス』でしょうか。
http://support.microsoft.com/kb/882709/ja
http://office.microsoft.com/ja-jp/excel-help/HA010081864.aspx

> カーソルを出したいのですがどうして良いかわかりません。
数式バーのことだとすると、基本的に、編集中は外部からの操作を受け付けない仕様だったと思います。
どうしても必要なら、SendInput API 等で ESC キーを送出してみては如何でしょう。
引用返信 編集キー/
■52934 / inTopicNo.3)  Re[2]: エクセルの入力待ち状態を解除したいのですが
□投稿者/ かずき (60回)-(2010/08/29(Sun) 23:13:54)
No52933 (魔界の仮面弁士 さん) に返信

ご教示大変ありがとうございます。
お教えいただいたURLから、入力ボックスは数式バーのことだとわかりました。

これからさっそく「SendInput API等」について調べてみます。
もし、力不足で進めなくなった時は申し訳ありませんが、またよろしくお願いします。

いずれにしても、この掲示板でご報告させていただきます。

引用返信 編集キー/
■52935 / inTopicNo.4)  Re[3]: エクセルの入力待ち状態を解除したいのですが
□投稿者/ かずき (61回)-(2010/08/30(Mon) 01:12:34)
2010/08/30(Mon) 12:35:23 編集(投稿者)

No52933 (魔界の仮面弁士 さん) に返信

ありがとうございました。
おかげさまで、目的の動作をさせることができました。

SendInput APIは私にはちょっと難しかったので、PostMessageを使いました。と言いますか、最初SendMessageを使ったのですが、うまくいかずに、ちょっとあきらめ気味に、PostMessageを使ったところうまくいきました。非常にほっとしたのですが、実際訳がわかりません。もしよろしかったらご教示いただけませんでしょうか。

Public Const VK_ESCAPE = &H1B
Public Const WM_KEYDOWN = &H100

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal Hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Dim Hwnd As IntPtr = FindWindow("XLMAIN", vbNullString)
'SendMessage(Hwnd, WM_KEYDOWN, VK_ESCAPE, 0) 'これはうまくいきませんでした。
PostMessage(Hwnd, WM_KEYDOWN, VK_ESCAPE, 0)

よろしくお願いします。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -