--------------------- [番外7] 一行野郎(最後の戦い1) --------------------------
はじまり、はじまり~。
<まったく持って不満だわ。>
何がだよ?
<この前のに決まってるでしょ! アレはやっぱり真・一行プログラムではないわ!>
はい。はい。一行ではなかったね。まあ良いじゃん。そんなに拘わらくても。
<ダメダメ。Linersの名が泣くわ。ねっ そうでしょ?>
別に。
<じゃあそうゆう事で、次はこれぇ。>
お話がかみ合ってませんけど。
<やっぱ完全一行で答えるのが筋ってもんよ♪>
あ、あの・・・
<ん? 何か用?>
この「クリップボードにコピーの仕方」ってムッチャ長いんですけど・・・
<だから?>
かなり無理っぽいんですけど。
<そうよ。 そこを何とかするのがアンタじゃないの!>
「エクセルを開き、sheet4のA1~AG100までをクリップボードにコピーし、terapadを開いて、クリップボードから貼り付け、という処理」を
マジで一行ですか?
<もちろん!>
分割払いとかは?
<今日もニコニコ現金一括払いよ。>
マジで?
<ガチに決まってるでしょ。>
<あっ。言い忘れてた。>
やっぱ分割で?
<質問全部なわけだから、追加の置換作業も込みね。>
<この際だからフリー版でも動くようにして、ノーComでフィニッシュね。もちろんマルチレスよ。 ニコッ!>
アホらしくって聞いておれんワイ。お休みぃ~~~~~。
<・・・流石のアンタも今回は無理だったようね。 アタイ自身も言ってて笑ちゃったぐらいだから。>
<最終的に質問者の完成版で20行。5150さんで4行。しかもこれらはPro版でComを使っている。>
<フリー版でComを使えば Excel=CreateOLEObj("Excel.Application") だけで終了よね。>
<しかし、Comを使わなければ Excel.Sheets[4].Range["A1:AG100"].Copy は想像を絶する難しさよね。>
<でももし可能ならどうしてもスクリプト見てみたいなぁ。・・・>
おはよう。。。まだ居たのアンタ。
<あら。ご挨拶ね。スクリプト出来たの?>
どーしてそうなる!
<最新の睡眠学習していたのかと思いましたわ。>
それは残念。睡眠のみでしたの。
<でもコレって本当に不可能なの?>
可能性はある。ただ非常に面倒なんだ。
<えっ? 出来るの?>
こればかりは、やってみないとね。
このくらいになると、通常の常識を横に置いておいて、背水の陣で臨まなきゃ。
まさに、「最後の戦い」の覚悟がいるね。
<「最後の戦い」?>
そう。なんでもアリのサドンデス。あらゆる可能性を試してみる。諦めない自分自身との戦いなのかも。
<試してみて?>
気軽に言ってくれるよね。やる方は大変なんですけど。まあコレも訓練かな? 今回はチト時間がかかるかも。
=== 結構な時間経過 ===
出来た。
<マジで?>
ガチよ。
<実行してみて。>
ポチットな!
<信じ難い動きだわ。結構速いし、本当に一行なの?>
ご覧あれ。
<う~~ん。アタイの常識では理解し難いわ。 式の中にSleepまであるなんて・・・>
<完全に常識を超越したスクリプトね。>
Linersですから。
<納得!>
おしまい。
-----------------------------------------------------------------------------------------------
提供は: 一行野郎 = 「一日一行(日課)」= 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さま
いえいえ助かりました。
ありがとうございました^^
それでは今後ともよろしくお願い申し上げます。
宮