--------------------- [番外8] 一行野郎(最後の戦い2) --------------------------
はじまり、はじまり~。
<う~~ん。う~~ん。う~~ん。>
便秘ですか?
<んっな訳ないでしょ! コレどうしても理解できない。>
確かに今回はリアクションが少なかったね。
コレ。
dm = doscmd("start excel.exe c:Book1.xls") + sendstr(0, "Sheet4!A1:AG100") + sleep(1) + sckey(0, vk_ctrl, g, v) + sckey(0,vk_enter,vk_ctrl, c) + SENDSTR(exec("C:Program FilesTeraPadTeraPad.exe"), REPLACE(REPLACE(getstr(0), "<#TAB>", ""),"n", "<#cr>"), 0, 1)
そうだな関数ごとに分解してみようか。
doscmd("start excel.exe c:Book1.xls") // Excel起動+ファイル
sendstr(0, "Sheet4!A1:AG100") // "Sheet4!A1:AG100"をクリップボードへ
sleep(1) // 待ち時間 Excel起動完了の為
sckey(0, vk_ctrl, g, v) // ジャンプダイアログ表示&貼り付け
sckey(0,vk_enter,vk_ctrl, c) // ジャンプダイアログ閉じる&範囲コピー
// terapadを起動しつつ、コピー内容をゲット&整形して貼り付け。
SENDSTR(exec("C:Program FilesTeraPadTeraPad.exe"), REPLACE(REPLACE(getstr(0), "<#TAB>", ""),"n", "<#cr>"), 0, 1)
<あっ!そっかぁ。ジャンプダイアログの操作だったのね。>
<しっかし、危ないタイミングね?>
この際、贅沢は言ってられん。
<しかも、ツッコミ所満載。>
どの辺が?
<doscmd("start はExecじゃダメなの?>
ダメじゃないけど、パスの長さと、パラメータの受け渡しそれに起動完了までのタイミングがね。
<じゃあ、sendstr(0, "Sheet3!A1:AG100")は?idを取って直接送れば良いのでは?>
試したけど、タイミングを取るのにSleepとGetidとSckeyが増えてしまったから。
<sckey(0,vk_enter,vk_ctrl, c)は対象Windowが違うのになぜ実行できる。>
sckey(0 はアクティブ・Windowに対してのキー操作であり、デフォルトのタイミング(間隔)を持って送られる。
Windowを閉じるのは速いので、間に合うみたいだね。
<ならsckeyは何故二つに分けて連続させた?>
そうして一度コントロールキーをキャンセルしないとEXCEL側でコマンドエラーとなったもんでね。
<ぐっ。たった一行にそこまで考えていたのか。だから時間がかかったんだ。>
<エクセルを開き、sheet4のA1~AG100までをクリップボードにコピーし、整形してTerapadに貼り付け。>
<条件はフリー版でも動くように、ノーCom&マルチレス。[その全てを一行]で。ふえぇ~~なんたる悪条件!>
<いったいこの条件をクリアできる人間が、どれほど居るのだろうか?>
いっぱい居るよ。でもみんなアホらしくてやらないだけさ。
<ツーことは、アンタはアホで一行オタクでヒマな訳ね。>
まっそうゆう事にしとこか。
<ったく。はじめっから出来るならポンポン出せばいいのに~~~! んな訳ないじゃない。>
< ・・・アタイだって不可能と思ったスクリプトが今、目の前にある。こっ、コイツぅ~~~。>
<物語の時代から見てるけど、そのころ一行スクリプトは少しだけで、「コイツ本当に一行野郎なのかよ」と思ってった。しかし、今は・・・>
アホな「一行スクリプト製造マシン」と思っているでしょ?
<・・・ うん♪♪♪>
(一行野郎編) おしまい。
-----------------------------------------------------------------------------------------------
提供は: 一行野郎 = 「一日一行(日課)」= アホな「一行スクリプト製造マシン」 = Liners でした。
-----------------------------------------------------------------------------------------------
クリップボードにコピーの仕方 宮
本日pro版を使い始めた宮です。
エクセルを開き、sheet4のA1~AG100までをクリップボードにコピーし、
terapadを開いて、クリップボードから貼り付け、という処理を実行したいのですが、
ご教授お願いいたします。
==========================
Excel = XLOPEN("C:Users●●.xls")
XLACTIVATE(Excel, "Sheet4")
SENDSTR(0, Excel.ActiveSheet.Cells[A1,AG100])
id = GETID("", "#32768", -1)
CLKITEM(id, "開く(O)", CLK_ACC or CLK_BACK or CLK_MUSMOVE)
id = GETID("無題 - TeraPad", "TTeraPadMainForm", -1)
SLEEP(1)
ss = GETSTR(0)
Excel.ActiveSheet.Cells[y,x].Value = ss
==========================
初心者というのが嫌いなのですが、
よろしくお願い申し上げます。
宮
DATE:2011/1/4(Tue) 23:42 No.3400
RE:クリップボードにコピーの仕方 Liners
問題点が不明ですが、下記を試してみては?
Excel = XLOPEN("C:Users●●.xls")
Excel.Sheets[4].Range["A1:AG100"].Copy
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
DATE:2011/1/5(Wed) 01:19
terapadでの置換作業の仕方 宮
Liners さま
宮です。
上記で教えていただいたコードで
terapadまでの貼り付けに成功いたしました^^
ありがとうございます!
続けまして、エクセルからのコピーに含まれる
タブ(t)⇒ 削除
n ⇒ n
という置換作業をしたいのですが、
下記のようなコードを作ってみましたが、
t や 空欄、n n といった文字列が
うまくカーソルに代入されません。
連続質問で申し訳ございませんが
宜しくお願いいたします。
==========================
Excel = XLOPEN("C:●●.xls")
// エクセルを開く
Excel.Sheets[4].Range["A1:AG100"].Copy
// シート4のA1~AG100までをクリップボードにコピー
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
// terapadを開き、貼り付け
sckey(0, vk_ctrl, r)
// terapadの置換(R)を開く
SLEEP(1)
id = GETID(GET_ACTIVE_WIN)
CLKITEM(id, "n=改行, t=TAB, =(E)", CLK_BTN, True)
// 置換ウインドウでnなどの記号を有効にする
sckey(0, vk_alt, t)
SENDSTR(0, "t", 1, True)
SLEEP(1)
// Altキー+tを押下し、置換前にカーソルを合わせ、tと代入する
sckey(0, vk_alt, r)
SENDSTR(0, "", 1, True)
SLEEP(1)
// Altキー+r を押下し、置換前にカーソルを合わせ、(空欄)を代入する
sckey(0, vk_alt, a)
SLEEP(1)
// すべて置換(a) を押下する
sckey(0, vk_alt, a)
SLEEP(20)
// 確認ウインドウですべて(a) を押下する
// 20秒待ち、処理が終わるのを待つ
sckey(0, vk_ctrl, r)
// terapadの置換(R)を開く
SLEEP(1)
sckey(0, vk_alt, t)
SENDSTR(0, "n", 1, True)
// Altキー+tを押下し、置換前にカーソルを合わせ、nと代入する
sckey(0, vk_alt, r)
SENDSTR(0, "n", 1, True)
SLEEP(1)
// Altキー+rを押下し、置換前にカーソルを合わせ、nと代入する
sckey(0, vk_alt, a)
SLEEP(1)
// すべて置換(a) を押下する
sckey(0, vk_alt, a)
SLEEP(20)
// 確認ウインドウですべて(a) を押下する
==========================
DATE:2011/1/5(Wed) 10:28
提案 5150
terapadに貼り付ける前に置換した方が効率よいのでは?
とりあえずtab削除のみ。
Excel = XLOPEN("C:Users●●.xls")
Excel.Sheets[4].Range["A1:AG100"].Copy
REPLACE(getstr(0),"<#TAB>","")
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
あとはがんばってください。
DATE:2011/1/5(Wed) 13:33
terapadでの置換作業の仕方 2 宮
5150さまのご提案ありがとうございます。
==========================
Excel = XLOPEN("C:Users●●.xls")
Excel.Sheets[4].Range["A1:AG100"].Copy
REPLACE(getstr(0),"<#TAB>","")
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
==========================
しかしこのコードでは
処理ができず、置換されぬままテラパッドに
データが貼り付けられました。
引き続き、ご迷惑をおかけしますが
宜しくお願い申しあげます。
宮
DATE:2011/1/5(Wed) 14:20
terapad置換 解決済み 宮
宮です。
自分でいじっていたら解決できました^^
ご迷惑をおかけいたしました。
==========================
// エクセルを開く
Excel = XLOPEN("C:●●●")
// シート4のA1~AG100までをクリップボードにコピー
Excel.Sheets[4].Range["A1:AG100"].Copy
// terapadを開き、貼り付け
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
sckey(0, vk_ctrl, r) // terapadの置換(R)を開く
// 置換ウインドウでnなどの記号を有効にする
CLKITEM(0, "n=改行, t=TAB, =(E)", CLK_BTN, True)
置換id =GETID("置換")
SendStr(置換id, "t", 1, True) // 検索
SendStr(置換id, "", 2, True) // 置換
sckey(0, vk_alt, a) // すべて置換(a) を押下する
SLEEP(1)
sckey(0, vk_alt, a) // 確認ウインドウですべて(a) を押下する
SLEEP(10)
sckey(0, vk_ctrl, r) // terapadの置換(R)を開く
置換id =GETID("置換")
SendStr(置換id, "n", 1, True) // 検索
SendStr(置換id, "n", 2, True) // 置換
sckey(0, vk_alt, a) // すべて置換(a) を押下する
SLEEP(1)
sckey(0, vk_alt, a) // 確認ウインドウですべて(a) を押下する
SLEEP(20)
DATE:2011/1/5(Wed) 15:18
RE:クリップボードにコピーの仕方 5150
失礼、こうでした。
Excel = XLOPEN("C:Users●●.xls")
Excel.Sheets[4].Range["A1:AG100"].Copy
SENDSTR(0,REPLACE(getstr(0),"<#TAB>",""))
sckey(exec("C:Program FilesTeraPadTeraPad.exe"), vk_ctrl, v)
けど処理速度が遅いかもしません。
いろんな方法がありますので。
クリップボードにコピーの仕方 宮
5150さま
いえいえ助かりました。
ありがとうございました^^
それでは今後ともよろしくお願い申し上げます。
宮