• 締切済み

imacros のループについて

imacrosにjsファイルを作って、 iimファイルの2ヶ所の部分の数を変えながらループを行いたいのですが、 ---------loop.js------------- for (i = 0; i < 10; i++) for (j = 0; j < 10; j++) { iimPlay("a"); } ---------a.iim-------------- TAB T=1 URL GOTO=https://www.----- TAG POS=1 TYPE=INPUT:TEXT FORM=NAME:loginform ATTR=NAME:nyuuryoku CONTENT=tyonmage19ij --------------------------- このようにしても、tyonmage1901→1902....1910 と数が動かずどうしていいか困っています。 jsファイルの変数をiimファイルに持ってくることはできないのでしょうか? またあるいは、imacrsに標準でついている{{!LOOP}}を使って 同じことはできますでしょうか? どうかご教授のほどよろしくお願いいたします。

みんなの回答

回答No.1

参考資料 http://wiki.imacros.net/iimSet%28%29 実験した環境 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" > <head> <title>Q7478087</title> </head> <body> <form action="pqr.html"> <ul> <li><input type="text" name="testinput" /> <li><input type="submit" /></li> </ul> </form> </body> </html> ===========使ったコード(abc.js)============ //もちろんUTF-8でコード書いている //こうやって引数を渡せる //つなげるのとかはjs側でやるものかな。多分。 // マニュアルによると //iimSetで設定する変数名としてVAR1とかは使えないようです。 //iimPlayの実行後に変数は初期化されるので使うたびにiimSetしなければならない模様。 for (var i = 0; i < 10; i++){ iimSet("VARIABLE1", i.toString()); iimPlay("abc"); } ===========iimファイル============ VERSION BUILD=7401110 RECORDER=FX TAB T=1 TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:pqr.html ATTR=NAME:testinput CONTENT= {{VARIABLE1}}

関連するQ&A

  • FirefoxのiMacros

    現在iMacrosで -----a.iim----- URL GOTO=http://xxx.1 URL GOTO=http://xxx.2 URL GOTO=http://xxx.3 -----b.iim----- URL GOTO=http://xxx.4 URL GOTO=http://xxx.5 -----a.js------ for (i = 0; i < 10; i++) { for (j = 0; j < 2; j++) { iimPlay("a"); } iimPlay("b"); } というマクロと使っているのですが、 別タブ(別窓でも可)でURLを変更したb.jsを動かすことは可能でしょうか? 別窓を起動してb.jsを実行するとa.jsが停止してしまいます。 素人ですので説明が分かりにくいかもしれませんので、 どんどん突っ込んでくれて構いません。

  • forループに慣れるには

    初めまして。 今資格を取ろうと思い独学でJavaを勉強してるんですが、 つまらない部分でつまずいています。 それは少々複雑なfor等のループです。 変数を追っていくうちにこんがらがってしまい、 変数の正しい値を見失ってしまいます。 例えば… Loop: for(int i = 0; i<5; i++) { for(int j =0; j<5; j++) { if(i==j) continue Loop; System.out.println("i = " +i+ "j = " +j); if(i > 3) break Loop; } } や、 int i,j; for(i = 0, j = 0; i<3;) { if(i++ == 2 || j++ == 2) break; } System.out.println(i); System.out.println(j); の様なループです。 試験範囲は大方勉強出来てるんですが まぬけな事にループがイマイチ理解出来てなくて(恥) 皆さんはどうやって慣れてこられましたか? つまらない質問ですが何か良いコツやアドバイスがあれば よろしくお願いします。

  • AccessVBAで、二次元配列を動的に設定したい

    以下のコードにあるattrという配列に、DB上のとあるコードと名前を設定したいと思います。 DB上のデータ量は可変なので、データを取得するごとに動的に配列attrの要素数を動的に増やしたいと思っています。 検索等で色々と調べながら以下のコードを書いてみたのですが、どうもうまく動きません。 ご教授願います。 --------------------------------------------------- Dim attr() As String [loop start] ReDim Preserve attr(i, 0) ReDim Preserve attr(i, 1) attr(i, 0) = コード attr(i, 1) = 名前 [loop end]

  • エクセルVBAの二重ループについて

    今月VBAを勉強し始めた初心者です。 Webにて入力されたcsvファイルを編集する際に 最新投稿を残して表に出力する目的で 下記のマクロを作成して実行してみたところ 変数i、jが0になるまでループが繰り返されてエラーになってしまいます。 ループ範囲指定のどこに問題があるのでしょうか? こちら側の環境が OS:Windows7 64bit Ultimate Office2007 です。 ご教授宜しくお願い致します。 Sub namaesakujo() Dim i As Integer Dim j As Integer Dim mct As Integer Dim Name1 As String Dim Name2 As String Dim Time1 As Long Dim Time2 As Long Worksheets("result").Activate mct = Worksheets("result").UsedRange.Rows.Count '最大行数を指定 Name1 = Cells(i, 2).Value '名前1 Name2 = Cells(j, 2).Value '名前2 Time1 = Cells(i, 1).Value '時間1 Time2 = Cells(j, 1).Value '時間2 '変数iを最終行数~2行目まで指定 i = mct Do While i > 2 '変数jを最終行数~2行目まで指定 j = mct Do While j > 2 '2列目iと2列目jが等しい(名前が同じ)場合、日時が小さい方を削除する If Name1 = Name2 And Time1 > Time2 Then Cells(j, 1).EntireRow.Delete End If j = j - 1 Loop i = i - 1 Loop MsgBox "更新完了" End Sub

  • アルゴリズム・ネストループ方式って何?

    プログラムの性能改善の課題が出ているのですが、アルゴリズムとしてネストループ方式、もしくはその延長上のものを用いること、とあります。 図書館でアルゴリズム関係の本を見てみたのですがどこにもネストループに関して説明がなく、大変困っています。 プログラム自体は、ファイルを読み込んで、表示させるだけの簡単なものです。 簡単に抜き出すと、 for (i=0;; i++){ if ((st = read_a(fd_name, &name_buf, i)) <=0) break; for (j = 0;; j++){ if ((st =read_a (fd_home,&home_buf ,j)) <= 0) break; if (!strcmp(name_buf.a , home_buf.b)){ printf("%s =%s (%s)\n", name_buf.a, name_buf.c , home_buf.c); } } if (st <0) break; といったものです。 注意事項として、break文を入れる手法を使わないこととあります。 お願いします。ネストループって何でしょう?教えてください。

  • シート名をループに

    質問を簡単にする為に以下のマクロがあるとします。 シート名が1~31とあるのですが、これをfor loopで 使うにはinteger等の定義が違うのでしょうか。 Sub bbb() Dim ws As Worksheet Dim 曜日 As String Dim i As Integer For Each ws In Worksheets For i = 1 To 31 If ws.Name = i Then  <----------ここでエラー  (コマンド) End If Next i Next End Sub

  • 括弧が含まれる文字列の括弧の中身の文字列(VB6)

    括弧()の中身の文字列をそれぞれ配列の文字列変数に設定したいと考えているのですが、Replaceを使えばいいのでしょうか? また、Replaceは置き換える文字の検索の開始場所は設定できると思うのですが、置き換える文字の検索の終了の場所は設定できるのでしょうか? 例えば、(asdf)as(asdfe)as(sf)という文字列のasdf,asdfe,sfをそれぞれ配列を使って文字列変数として表したいのです。 nyuuryoku = Text1.Text For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "(" Then k = k + "と" + CStr(i) j = j + 1 ElseIf Mid(nyuuryoku, i, 1) = ")" Then m = m + "と" + CStr(i) l = l + 1 End If Next i Text17.Text = "( は" + CStr(j) + "個" + k + "番目、 " + ") は" + CStr(l) + "個" + m + "番目" For i = 1 To Len(nyuuryoku) If Mid(nyuuryoku, i, 1) = "[" Then kk = kk + "と" + CStr(i) jj = jj + 1 ElseIf Mid(nyuuryoku, i, 1) = "]" Then mm = mm + "と" + CStr(i) ll = ll + 1 End If Next i Text2.Text = "[ は" + CStr(jj) + "個" + kk + "番目、" + "] は" + CStr(ll) + "個" + mm + "番目" Dim kakkohajime(50) As Long Dim kakkoowari(50) As Long Dim kakkonakami(50) As String For i = 1 To CStr(j) kakkohajime(0) = 1 kakkohajime(i) = InStr(kakkohajime(i - 1), nyuuryoku, "(") Next For i = 1 To CStr(j) kakkoowari(0) = 1 kakkoowari(i) = InStr(kakkohajime(CStr(j) + 1 - i), nyuuryoku, ")") Next このあとにkakkohajime(i)の場所からkakkoowari(i)の場所までの文字列をそれぞれkakkonakami(i)の配列の文字列にいれたいのです。 最後に、kakkonakami(i)をtextに表示したいと思っています。

  • iアプリでバイナリデータを16進数に変換する方法がわかりません。

    01234 56789 abcde こちらのデータを一旦、バイナリデータに圧縮して、 携帯端末でint型に変換する方法がわかりません。 10進数では上手くいきましたが、16進数では上手くいきません。 byte[] dbuf // 取得したデータ byte[] dttip = new byte[1]; int data = 0, pos = 0; for(int j = 0;j < 5;j++){ // 文字を配列に格納 for(int i = 0; i < 3;i++){     // ここでデータを1バイトずつ取得     dttip[0] = dbuf[pos]; data = byteChangeint(dttip[0]); if(data >= 48){ // ここでデータを取得 } else{ i--; } pos++; } public int byteChangeint(byte[] b){ int res = 0; res |= (int)(b[0]) & 0x000000FF; return res; } 16進数のデータを取得しようとした後、データの展開が上手くいきません。 よろしくお願いします。

  • ループ処理でシンプルにまとめる方法を教えてください。

    (例) for ($j=0;$j<=count($arGroup)-1;$j++){ for ($i=0;$i<=count($arGroup[$j])-1;$i++){ if($j == 0){ echo "(".$number[0][$i+(count($ar)-1)].")\n"; }elseif($j == 1){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))].")\n"; }elseif($j == 2){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))+(count($arGroup2))].")\n"; }elseif($j == 3){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))+(count($arGroup2))+(count($arGroup3))].")\n"; } } } このループ処理をもっとシンプルにしていきたいと思います。 jの数が増えていく予定)+(count($arGroup数字))が追加されていくような形になります。 どなたか教えてください。

    • ベストアンサー
    • PHP
  • エクセルVBAでメモリ解放するには?

    初心者な質問でもうしわけないのですが、教えてください。私は現在エクセルVBAを利用してウェヴマクロのimacrosの制御を行いサイトからリストの抽出を行っています。その際、変数の定義がうまくできなかったため、クリップボードに必要な情報をコピーし、エクセルに張り付けるという流れで作業を行っています。そして、このループ作業を約1000回行いたいのですが、大体50回目で止まります。止まっている際にエラーボックスが出て、「out of memory」となっています。クリップボード多用によるメモリの使い切りだと思います。そこで、クリップボードの内容を一度クリアすることを行いたいのですが、VBAのソースコードがわかりません、どなたかご存知であればご教授していただきたいと思います。 尚、VBAのソースコードは以下の通り。 Sub 抽出マクロ() Dim iim1, iret, row, counter, column, url Application.ScreenUpdating = False Set iim1 = CreateObject("imacros") iret = iim1.iimInit iret = iim1.iimDisplay("Submitting Data from Excel") row = 2 counter = 1 Range("I1").Copy Do If counter = 2500 Then Application.ScreenUpdating = True Exit Sub End If iret = iim1.iimPlay("titlename1.iim") Cells(row, 1).Value = Replace(iim1.iimGetLastExtract(), "[EXTRACT]", "") iret = iim1.iimPlay("newprice.iim") Cells(row, 2).Value = Replace(iim1.iimGetLastExtract(), "[EXTRACT]", "") iret = iim1.iimPlay("ISBN10.iim") Cells(row, 3).Value = Replace(iim1.iimGetLastExtract(), "[EXTRACT]", "") iret = iim1.iimPlay("ISBN13.iim") Cells(row, 4).Value = Replace(iim1.iimGetLastExtract(), "[EXTRACT]", "") iret = iim1.iimPlay("ASIN.iim") Cells(row, 5).Value = Replace(iim1.iimGetLastExtract(), "[EXTRACT]", "") row = row + 1  counter = counter + 1   Loop End Sub ***追伸*** ちなみにループの中に同じソースが12個続きます。そのため50回程度ループしているだけで約600回の抽出が行われます。 お手数ですが、ご教授していただけると助かります。

専門家に質問してみよう