1

実行中のExcel 2007 ドキュメントのセルから値を読み取ろうとしています。LuaのWinAPI 拡張機能を使用しています。私は現在、Windows XP コンピューターで実行しています (それが問題であれば、WinAPI は XP 以降で動作するようです。

これは私のExcel文書です:

エクセル

これは私のLuaコードです:

require 'winapi'

w = winapi.find_window_match('Book1') -- Specify the name of the window

w:show() -- Set the visability

w:set_foreground() -- Bring this window to the foreground

handle = w:get_handle() -- Get window handle

t = {} -- Create a table

w:enum_children(function(w) table.insert(t,w) end) -- Enumerate all children

for k,v in pairs(t) do -- Print out all pairs in the table
    print("",k,"=",v)
end

これは私のLuaコード出力です:

コード出力

各セルを見つけるために再帰的に列挙する方法を知っている人はいますか? または、これについてもっと良い方法はありますか?私が欲しいテキストは「1234」です。私は Unix の方が好きなので、Windows プログラミングはあまりやったことがありませんが、正しい方向に進んでいるようです。ここから先の展開がわからない!

4

1 に答える 1

1

Excel がスプレッドシートのすべてのセルにウィンドウを使用しているとは思えないため、ウィンドウ階層をナビゲートしてセルにアクセスしようとすると、行き止まりになる可能性があります。

可能であれば、コンマ区切り値などの一般的なファイル タイプにデータをエクスポートし、プログラムでそれを解析することをお勧めします。

または、 UI オートメーションについて読むこともできます。これは、スクリーン リーダーなどで Windows アプリケーションの UI のデータにアクセスする方法です。やったことはありませんが、大変な作業になりそうです。それでも、Windows アプリケーションからユーザー インターフェイスを介してデータを取得しようとする方法としては、これが最も堅牢でサポートされている方法だと思います。

于 2013-06-10T22:13:27.893 に答える