社会不安障害:SAD、ボランティアとセカンドライフ

SADで会社を休職したが、一年で復帰し、無事定年を務めて、その後の生活とボランティアについて気ままに掲載中

UWSC+COMオブジェクト

2009-09-10 08:40:55 | ITについて

エクセルのVBAプログラムの急遽作成の続き(なんとか目処がたちそうだ)で掲載したが、先月の処理に関しては辛うじて、今月の1日で何とか処理する事ができた。エクセルのVBAのプログラム作成が何とか間に合ったからだ。一方で、このプログラムでの処理後の修正も力作業で乗り切り、夕方ギリギリの滑り込みセーフとなったが、当社で最も早い処理だったらしい。逆を言うと、他部門はシステムの締めが第4営業日となっており、私と部下の女性が最後は力作業となった(冷や汗をかくぐらい必死だった)が、9月1日の一日で全てが終了した。

さて、私のここ8月からの処理を振り返ってみると、殆ど新(基幹)業務システムで入力処理を私が行なった事で、問題が発生しなかったが、私に取ってはかなりの負担になっていた。しかし、これをこのまま部下の女性に渡すと更に危険が増すと思い、1ヶ月は私が業務の実務をする事で耐えた。その合間をぬって何とかもっと簡略化できないか?と考えていた。

新業務システム(私的意見ながら基幹と言う言葉は、アクセル+VBで構成される事から外す事にした)の課題は多くあり、その認識は担当部長が既に知っている為、私は敢えて文句は言わず、お互い歩み寄る形で相談したいた。つまり、実務上は双方共に問題意識を持っており、それぞれが処理しやすいように考えていた。

と言う事でその後のUWSCの更なる続きと言うか、このUWSCに強力な組み合わせと言うか新しい機能と課題を知る事になった。

つまり、UWSCからCOMオブジェクトが使える事がわかり、エクセルで予め処理したデータを自由に、UWSCに取り込めると言う事がわかった。

つまり、UWSC+COMオブジェクトで処理すると言う方向性が見えて来た。

1)問題はCOMオブジェクトによる処理スピードの速さと後処理のタイミングがかなり難しい。要はSLEEPで何秒待ち時間を撮るかと言う事。

2)UWSCの高度記録(スクリプトでの記述)の殆どは失敗。もちろんアプリによると思うが、今回の新業務システムでは、プルダウンメニューの選択も出来なかった。

と言う事で、問題は、COMオブジェクトの処理後の待ち時間とUWSCの高度記録を使っての処理をどう実現させるかになる。

COMオブジェクトの実行後は、少なくとも数秒待つ事が必要であり、そうでなければ、マウスポイントの位置すら検知できない事が分かったので取り合えず、これで薦めようかと思っている。

高度記録による処理は、結果的にはショートカットをSCKEYで使うか仮想キーで使うかのどちらかであり、ドッチも似たり寄ったりかなと考えており、最大の問題は文字入力つまりSENTSTR関数ですべてが処理できるかが最大の課題となりそうだ。 

// ------------------------------
//
DIM 受注番号
DIM 受注名称
DIM 得意先
DIM 納入先
DIM 受注日
DIM 作成日
DIM 完成日
DIM 受注内容
DIM 受注金額
DIM 原価       //仕入額
DIM 検収日
DIM 注文番号 //客先
DIM 営業担当
// ------------------------------

// COMオブジェクトでエクセルファイルから必要な情報をセットする
XL = CreateOLEObj("Excel.Application") XL.Visible = true // Ture:可視 false:不可視
//ファイル指定はドライブ名を含むフルパス
WBook = xl.WorkBooks.Open(FileName := "D:My DocumentsFreeSoftuwsc45b受発注情報.xls") WBook.Sheets("Sheet1").Select
//

受注番号 = WBook.ActiveSheet.Cells[1,2].Value
受注名称 = WBook.ActiveSheet.Cells[2,2].Value
得意先   = WBook.ActiveSheet.Cells[3,2].Value
納入先    = WBook.ActiveSheet.Cells[4,2].Value
受注日    = WBook.ActiveSheet.Cells[5,2].Value
作成日    = WBook.ActiveSheet.Cells[6,2].Value
完成日    = WBook.ActiveSheet.Cells[7,2].Value
受注内容 = WBook.ActiveSheet.Cells[8,2].Value
受注金額 = WBook.ActiveSheet.Cells[9,2].Value
原価       = WBook.ActiveSheet.Cells[10,2].Value
検収日    = WBook.ActiveSheet.Cells[11,2].Value
注文番号 = WBook.ActiveSheet.Cells[12,2].Value
営業担当 = WBook.ActiveSheet.Cells[13,2].Value

// クローズ処理とオブジェクトのクリアー
WBook.Close;WBook = Nothing
// 保存の場合、今回は必要なし
// WBook.Save
XL.Quit;XL = Nothing

SLEEP(2)

ACW(GETID("×××× 基幹業務システム ", _ "ThunderRT6MDIForm"),14,30,1251,964,0)

// 受注メニュー(プルダウンメニュー)クリック BTN(LEFT,CLICK,159,60,1000)

// 受注入力メニュー選択(表示されたプルダウンメニューからメニューを選択) BTN(LEFT,CLICK,173,79,1000)

※上記のCOMオブジェクトの処理後のSLEEPの時間が、キーとなる。2~3秒で、ほぼ何とかいけそうだ。

最も、UWSCは、上記の様にCOMオブジェクトを直接記述しなくとも、専用の関数も容易されている様だが、その違いまでは未だ検証していない。上記でもかなり高速にエクセルが起動しSheet1に設定された各値を、瞬時に設定する為、余りにその速さに驚いたが、問題はその後処理である。上記のSLEEPを入れなかった為に、その次の業務システムに引き継ぐ所ではマウスボタンクリックでさえも、正常に動作しなかった。

実は更なる落ちがあって、当分このUWSC+COMオブジェクトの開発は、一時中断しようと考えている。その理由はまた別の機会に掲載したい。


最新の画像もっと見る

コメントを投稿