HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0805
Area39既に起動して居るエクセルをnewcomなどで編集したい3未解決


Area39

リンク

2021/8/5(Thu) 07:57:10|NO.93486

エクセルを、HSPでコントロールしたいと考えて居ます。教えて下さい
newcom等を使ってエクセルを起動させ、その起動したエクセルのセルなどを編集
する方法は普通にあるかと思うのですが、既に起動して居るエクセルを
コントロールしたいです。
考えたやり方として、起動して居るexcelのハンドルを取得してきてそれで
出来たらと思うのですが、上手くいきません。

実際にやりたい事は、エクセルファイルの中身の置換となりますが、
とりあえず、セルの代入をやってみようと思います。


#uselib "user32.dll" #func global FindWindow "FindWindowExA" sptr,sptr,sptr,sptr #func global GetClassName "GetClassNameA" sptr,sptr,sptr hwnd_target = 0 hparent = 0 count = 0 msg = "" repeat //ウィンドウを検索 FindWindow hparent, hwnd_target, 0, 0 hwnd_target = stat if ( hwnd_target == 0 ) : break //クラス名を取得 sdim class, 1024 GetClassName hwnd_target, varptr(class), 1024 //dialog class if ( instr(class,0,"XLMAIN") != -1 ) { msg += ""+class+"("+hwnd_target+")\n" break } loop objsize ginfo_winx,ginfo_winy mesbox msg // 初期化 newcom xlApp, "Excel.Application" xlApp("visible") = 1 xlApp("displayalerts") = 0 xlBooks = xlApp("workbooks") xlBook = xlBooks("Add") xlSheet = xlBook("Worksheets","sheet1") // データを作成 xlSheet("Range","B1") = "名前"

このプログラムですと、エクセルのハンドルを取得するまではつくってあります。
が、エクセルが起動して居ても新たにエクセルを起動してそちらを編集してしまいます。

編集するエクセルの対象を既に起動して居るエクセルにしたいです。

ご指導、よろしくお願い致します。



この記事に返信する


Area39

リンク

2021/8/8(Sun) 23:17:36|NO.93521

もし、場合によっては、newcomではなく、excelを制御するような形でもOKです。
キーフックなど、できないでしょうか・・・?

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



ハルウララ

リンク

2021/8/14(Sat) 02:45:03|NO.93574

すでに起動中のEXCELはRunning Object Tableで管理されています。
そこから引っ張ってくれば、操作できるかと。

https://qiita.com/nukie_53/items/5d681a2f49a137204c14
http://eternalwindows.jp/com/moniker/moniker04.html



Area39

リンク

2021/8/21(Sat) 08:34:12|NO.93646

ハルウララさま

返信ありがとうございます。遅くなりすみません。

Running Object Tableで可能とのことですが、これをHSPで操作することで切るのでしょうか?



ONION software Copyright 1997-2023(c) All rights reserved.