[ 掲示板に戻る ]

過去ログ閲覧モード

エクセルシートにコピー分を最終行に順次入力方法 / シスイ
以前にも投稿させて頂き、色々ヒントを頂いて試しているのですがまったくうまくできません。
お手上げ状態です。過去ログでエクセル最終行取得で見てはいますが、うまくいきません。
助けて頂けないでしょうか?

下記のコードです。

xlUp=-4162

Excel = XLOPEN("C:\Users\aruke\Desktop\Book1.xlsx")
tek = INPUT("Sheetを入力してください","Sheet")
XLACTIVATE(Excel, tek)

yA = 1  //A列の現在行
yB = 1  //B列の現在行

SENDSTR(0, "")
while True
  sleep(0.2)
  
  ifb getkeystate(vk_n) then
    x = 1
  elseif getkeystate(vk_m) then
    x = 2
  else
    continue  //a か b が押された場合のみ処理する
  endif
  
  ss = GETSTR(0)
  ifb (ss <> "")  //クリップボードにある場合のみ処理する
    ifb (1 = x) then
      y = yA
    elseif (2 = x) then
      y = yB
    endif
    
y = Excel.ActiveSheet.Cells(Excel.ActiveSheet.Rows.Count, 1).End(xlUp).Row
If y>1 or (y=1 and Excel.ActiveSheet.Cells[y, x].Value<>"") Then y=y+1 //先頭を考慮(上限は適当に)
Excel.ActiveSheet.Cells[y, x].Value = "データ"
    SENDSTR(0, "") // クリップボードをクリア
    
    //行送り
    y = y + 1
    ifb (1 = x) then
      yA = y
    elseif (2 = x) then
      yB = y
    endif
    
  endif
wend

No.2841 2016/09/05(Mon) 09:40:57

Re: エクセルシートにコピー分を最終行に順次入力方法 / しき
//初めにそれぞれの空欄行を取得する

Excel = XLOPEN()
XLACTIVATE(Excel, "Sheet1")

o_sheet = Excel.ActiveSheet
yA = sub_getBlankRowNumber(o_sheet, 1)  //A列の現在行(空欄行)
yB = sub_getBlankRowNumber(o_sheet, 2)  //B列の現在行(空欄行)

msgbox(yA +" , "+ yB)

//以下、前回の投稿と変更なし
//http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=2659
SENDSTR(0, "")
while True
  sleep(0.2)
  
  ifb getkeystate(vk_a) then
    x = 1
  elseif getkeystate(vk_b) then
    x = 2
  else
    continue  //a か b が押された場合のみ処理する
  endif
  
  ss = GETSTR(0)
  ifb (ss <> "")  //クリップボードにある場合のみ処理する
    ifb (1 = x) then
      y = yA
    elseif (2 = x) then
      y = yB
    endif
    
    Excel.ActiveSheet.Cells[y, x].Value = ss
    SENDSTR(0, "") // クリップボードをクリア
    
    //行送り
    y = y + 1
    ifb (1 = x) then
      yA = y
    elseif (2 = x) then
      yB = y
    endif
    
  endif
wend


//下から上に探して最初の空欄がある行番号を返す
function sub_getBlankRowNumber(oSheet, iColumnNumber)
  dim i_bottomRow = oSheet.Rows.Count
  dim o_range   = oSheet.Cells(i_bottomRow, iColumnNumber)
  
  dim xlUp = -4162
  o_range = o_range.End(xlUp)     //Ctrl + ↑ と同じ操作
  
  ifb (empty <> o_range.Value) then  //空欄でなければ
    o_range = o_range.Offset(1, 0)  //一つ下のセル
  endif
  
  result = o_range.Row
fend

No.2847 2016/09/05(Mon) 20:57:06

Re: エクセルシートにコピー分を最終行に順次入力方法 / シスイ
しき様、できました、本当にありがとうございます。ずっと1ヶ月程、頭の中でモヤモヤしていたのが晴れました。教えて君から脱局できるよう実力をつけていきたいと思います。
No.2848 2016/09/06(Tue) 09:50:29
WEBページに表示された文字列の検索について / リキュール
WEBページに表示された文字列を検索しています。
メニューバーを表示していないので以下のようにしています。
検索文字を入れると右側に「一致はありませんでした」、「○件の一致」と表示されます。
この文字を取得するにはどうしたらよいのでしょうか。

id = GETID("○○○○","IEFrame")
CTRLWIN(id, ACTIVATE)
KBD(VK_ALT)
KBD(VK_E)
KBD(VK_F)
sleep(1)
NAME = input("検索文字を入力して下さい")
SENDSTR(id,NAME,0,true,true)

No.2838 2016/09/04(Sun) 20:10:31

Re: WEBページに表示された文字列の検索について / しき
//この掲示板で、"uwsc"で検索して実行
id = getid("","IEFrame")
n = getitem(id, itm_edit)
s = n +"個<#cr>"+ join(all_item_list, "<#cr>")
print "<#cr>-------------<#cr>" + s +"<#cr>"
msgbox(s)


id_findbar = hndtoid(getctlhnd(id, "FindBarClass"))
ifb (id_findbar < 0) then
  msgbox("検索バーなし")
  exit
endif

n = getitem(id_findbar, itm_static)
s = join(all_item_list, "<#cr>")
s = n +"個<#cr>"+ join(all_item_list, "<#cr>")
print "<#cr>-------------<#cr>" + s +"<#cr>"
msgbox(s)


//結果
4個
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi
uwsc

-------------

16/09/04 22:11 
2個
検索:
22 件の一致
-------------

getitem(検索バーのコントロール) で取得できました。
なぜか、getitem(IE本体) では取得できません。(?謎)
win7x64 IE11 uwsc5.2.1

No.2840 2016/09/04(Sun) 22:18:17

Re: WEBページに表示された文字列の検索について / リキュール
しき さん、お世話になります。
必要な値が取り出せました。
ありがとうございました。

id_findbar = hndtoid(getctlhnd(id, "FindBarClass"))
n = getitem(id_findbar, itm_static)
s = join(all_item_list, "<#cr>") //この行は実際には使用しません
print all_item_list[1] //必要としていた文字取得

No.2846 2016/09/05(Mon) 14:29:28
SleipnirとIEのメリット、デメリットについて / タカハシ
uwscの先輩方のブログを見ていると、Sleipniと言うブラウザーを使用している方をよく見かけます。
そこで質問なんですがuwscを使用する上で、IEではなくSleipniを使うメリットとは何でしょうか?

No.2836 2016/09/03(Sat) 23:01:40

Re: SleipnirとIEのメリット、デメリットについて / stuncloud
Sleipnir.APIを使うという話でしょうか
IEと違ってタブの管理もスクリプトからできるのが利点、かな?
Sleipnir.APIが使えるSleipnir2のエンジンはTridentなので描画やらなんやらに関してはIEに近いわけで、まぁ好みの問題では?
とは言えSleipnir2の最終更新が2014年ということを考えるといつまでも古いバージョンのブラウザを使い続けるのもどうかな、なんて考えもありますが

# Sleipnir3のころからSleipnir.API復活させて欲しいと言い続けて4、5、6とバージョン重ねていきましたが結局実装されませんでしたね…

No.2842 2016/09/05(Mon) 09:50:50

Re: SleipnirとIEのメリット、デメリットについて / タカハシ
stuncloud様、Sleipnirを使うメリットは現状あまりないと言う事ですね。IEでCOM操作をもっと深く勉強していきたいと思います。
No.2845 2016/09/05(Mon) 12:49:34
上下に指定のIDウィンドウを並べる方法について / シスイ
過去のログで検索したら、ともさんという方が投稿されたコードがあるのですが、コードを見ても理解ができません。上下に指定IDのウィンドウを並べる方法ありますでしょうか?

Dim nCount = Random(4) + 2;
Dim id[nCount-1];
Dim i;
For i = 0 To nCount-1
  id[i] = Exec("notepad.exe");
Next

MsgBox("重ねて表示");
AdjustWindows(CascadeWindows, id);
MsgBox("上下に並べて表示");
AdjustWindows(TileHorizontally, id);
MsgBox("左右に並べて表示");
AdjustWindows(TileVertically, id);


Procedure  AdjustWindows(nType, var wndID[])
  DEF_DLL VirtualAlloc(LONG, DWORD, DWORD, DWORD):LONG:KERNEL32.DLL
  DEF_DLL VirtualFree(LONG, DWORD, DWORD):BOOL:KERNEL32.DLL
  DEF_DLL RtlMoveMemory(LONG, var LONG, DWORD)::KERNEL32.DLL
  DEF_DLL TileWindows(HWND, UINT, LONG, UINT, LONG):WORD:USER32.DLL
  DEF_DLL CascadeWindows(HWND, UINT, LONG, UINT, LONG):WORD:USER32.DLL

  const  MEM_COMMIT = $1000;
  const  PAGE_READWRITE = $0004;
  const  MEM_RELEASE = $8000;
  const  MDITILE_VERTICAL = $0000;
  const  MDITILE_HORIZONTAL = $0001;

  const  CascadeWindows = 0;
  const  MinimizeAll = 1;
  const  TileHorizontally = 2;
  const  TileVertically = 3;
  const  UndoMinimizeALL = 4;

  Dim  nLen = Length(wndID);
  Dim  dwSize = nLen * 4;
  Dim  pMem = VirtualAlloc(0, dwSize, MEM_COMMIT, PAGE_READWRITE);
  Dim i;
  For i = 0 To nLen-1
    RtlMoveMemory(pMem + (i*4), IdToHnd(wndID[i]), 4);
  Next

  Select (nType)
    case CascadeWindows;
      CascadeWindows(0, 0, 0, nLen, pMem);
    case TileHorizontally;
      TileWindows(0, MDITILE_HORIZONTAL, 0, nLen, pMem);
    case TileVertically;
      TileWindows(0, MDITILE_VERTICAL, 0, nLen, pMem);
  SelEnd
  VirtualFree(pMem, 0, MEM_RELEASE);
FEnd

No.2839 2016/09/04(Sun) 22:12:53

Re: 上下に指定のIDウィンドウを並べる方法について / stuncloud
AdjustWindows(やらせたい動作, idが入った配列)

上下だったらTileHorizontallyですね

id1 = exec("notepad")
id2 = exec("notepad")
dim ids[] = id1, id2 // 配列に入れる
AdjustWindows(TileHorizontally, ids) //上下に並べる

acwを使うという手もありますよ

h = G_SCREEN_H / 2
acw(id1, 0, 0, G_SCREEN_W, h)
acw(id2, 0, h, G_SCREEN_W, h)

No.2843 2016/09/05(Mon) 10:08:47

Re: 上下に指定のIDウィンドウを並べる方法について / シスイ
stuncloud様、いつもありがとうございます。acwをやり方思う通りの処理ができました。本当に、いつも助けて頂きありがとうございます。
No.2844 2016/09/05(Mon) 12:46:59
Sleipnir.APIでエラー / mimi
Sleipnirをインストールして、下記のコードを実行したところ、エラーが出ます。
x=CreateOLEobj("Sleipnir.API")
COM_ERROR クラスの文字列が無効です、ProgID: "Sleipnir.API"

UWSCはSleipnirに対応していないんでしょうか?

No.2835 2016/09/03(Sat) 12:36:54

Re: Sleipnir.APIでエラー / routa
[Sleipnirオプション][クライアント][全般][スクリプトによるクライアントの操作を許可する] をオンにしましょう。
No.2837 2016/09/04(Sun) 17:33:57
PROCEDUREとcallの使い方について / タカハシ
test.uws1で下記のコードで保存しています。これを部品としてtest2.uwsで呼び出したいのですが、msgが定義されていませんと表示されます。
何が間違っているのでしょうか?


[test1.uws]
PROCEDURE msg()
MSGBOX( ”メッセージ”)
FEND

[test2.uws]
call "C:\Users\aruke\Desktop\UWS\部品\test1.uws"

print msg

No.2833 2016/09/02(Fri) 15:04:15

Re: PROCEDUREとcallの使い方について / stuncloud
二点間違ってます

一点目
msg は関数なので msg() としなければいけません
> print msg
にあるような括弧を付けない msg は変数として解釈されるため
> (変数としての)msgが定義されていません
という警告が出ます

二点目
printはその後に書いた式が返す値を出力します、ですので
> print msg()
とした場合はmsg()の返す値が表示されるのですが、msg()はprocedureなので値を返しませんからなにも出力されないことになります
(実際はEMPTYが返されてるような動きになります)
関数で値を返す場合はfunctionを使います

print msg()

function msg()
 result = "メッセージ"
fend

No.2834 2016/09/02(Fri) 15:48:18
UWSCのスクリプトでスケジュール設定をしたいです。 / nnn
いつもお世話になっております。
実行環境は、IE9、WindowsVistaです。

現在、あるサイトの掲載終了時刻を取得して、その時刻になったらPCをスリープから起動してIEを操作するというスクリプトを考えています。

掲載終了時刻を取得してから掲載終了するまでは2日ほどかかることがあるので、可能であればスリープ状態のPCを起動させたいです。

UWSCに付属のスケジュール機能ですと、毎回同じ時間ならば手動で1度設定すればよいのですが、終了時刻は毎回異なり、設定する回数も多いので、スクリプトで実現させたいです。

UWSCの画像認識でボタンを押していき、スケジュール設定をするという方法も考えましたが、これ以外に方法がございましたらご教授をよろしくお願いいたします。

No.2829 2016/09/02(Fri) 13:26:00

Re: UWSCのスクリプトでスケジュール設定をしたいです。 / stuncloud
スケジュールは %APPDATA%\UWSC\UWSC.ini (※)に書き込まれているので、一旦手動でスケジュールを登録しiniファイルにどのように書き込まれるのかを確認してから、writeiniを使ってスクリプトから指定した時刻で登録するようにすればよいでしょう
writeiniした後はUWSCを再起動すれば設定が読み込まれると思います
※ iniファイルの場所は[設定]>[.INI/.LOG Folder]で開けます

UWSCのスケジュール機能を使わずタスクスケジューラを使うという手もあります
こっちはちょっと難易度高いですがいろいろできますよ
https://gallery.technet.microsoft.com/scriptcenter/78fa186b-8c7d-42af-bd1a-d905e3d3abab

No.2830 2016/09/02(Fri) 13:46:36

Re: UWSCのスクリプトでスケジュール設定をしたいです。 / nnn
stuncloud様

ご回答ありがとうございます。

早速、iniファイルを書き換えるスクリプトを作成してみます。

ありがとうございました。

No.2831 2016/09/02(Fri) 14:00:21
AddAttachment / tama
「.AddAttachment」は、UWSCで使用できないのでしょうか?と以前質問が上がっていましたが、
同じ穴にハマり、自己解決しました。
ですが、記載が無かったので、自己解決記録を記載させて下さい。


 .AddAttachment("C:\hoge.txt")


 .AddAttachment="C:\hoge.txt"

No.2827 2016/09/02(Fri) 11:10:16

Re: AddAttachment / 俄プログラマー
自己解決した場合そのソースを載せない人が多い中
大変素晴らしいです。

No.2828 2016/09/02(Fri) 12:32:50
英語環境での設定ダイアログの翻訳誤りの件 / waken
UWSCダイアログ右端の設定ボタンから、「設定(X)...」を選択して表示される設定ダイアログですが、日本語環境だと「記録」と表示されているのですが、英語環境でUWSCの設定ダイアログを表示すると「再生」と同じ「Play」と表示されています。「Record」の誤りでしょうか?
No.2819 2016/08/29(Mon) 18:45:29

Re: 英語環境での設定ダイアログの翻訳誤りの件 / umiumi
修正します。
No.2821 2016/08/30(Tue) 01:32:17
CREATEOLEOBJ("MSEdge.Application")が動かない / 犬
サンプルに載っている、コードを実行すると、
「COM_Error:クラスの文字列が無効です。ProgID:"MSEdge.Application"」
と表示されます。

http://uwsc.info/sample.html#N38
edge = CREATEOLEOBJ("MSEdge.Application")
edge.Navigate("http://www.google.co.jp/")

環境はWindows 10 HomeでEdgeは最初からインストールされています。
Edgeも問題無く動作する環境なのですが、何がいけないのでしょうか?

関係ないかもしれませんが、
DOSCMD("start shell:AppsFolder\Microsoft.MicrosoftEdge_XXXXXX!MicrosoftEdge")
は問題なく動作します。

No.2791 2016/08/20(Sat) 23:55:59

Re: CREATEOLEOBJ("MSEdge.Application")が動かない / routa
uwscのバージョンが古いからでしょう。
No.2792 2016/08/21(Sun) 20:29:36

Re: CREATEOLEOBJ("MSEdge.Application")が動かない / 犬
使っていたバージョンが4.9cでした・・・
無事に解決しました。ありがとうございました。

No.2793 2016/08/21(Sun) 22:13:03

Re: CREATEOLEOBJ("MSEdge.Application")が動かない / 犬
バージョン5.2.2にして実行しました。一度だけ成功したのですが、その後はcom_errorと表示されるだけで実行できません。再起動しても何をしても実行できませんが、何が原因と考えられるでしょうか?
No.2794 2016/08/23(Tue) 01:20:47

Re: CREATEOLEOBJ("MSEdge.Application")が動かない / satocha
私の環境でもうまくいきません
edgeは起動するもののcom操作がエラーになります
OS:windows10 pro 64ビットビルド番号14393
Edge:Microsoft Edge 38.14393.0.0
UWSCは最新です

No.2810 2016/08/26(Fri) 07:41:44

Re: CREATEOLEOBJ("MSEdge.Application")が動かない / umiumi
修正します。
No.2820 2016/08/30(Tue) 01:31:43
全721件 [ ページ : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 73 >> ]