人に聞けない痔の悩み、これでスッキリ >>

imacroで組んだマクロをバッチファイルで自動実行させたい。

Firefoxアドオンの「imacro」でマクロファイルを作成したので、それをバッチファイルで起動できるようにし、コンピュータ起動時に自動的に実行されるようにタスクスケジューリングしたいと思っています。

バッチファイルには以下のコマンド書けば可能かと思ったんですが、実行されません。
start "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=マクロファイル名.iim

良い方法を知っておられる方がおられましたらご教授願います。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

iimを直接実行しようとすると、Firefoxを起動しておかないと空白ページになったりするんですよね。


Firefoxを複数起動しないアドオンなどもありますが、思ったような動作をしないので使用をやめました。

自分は面倒ですがマクロごとにHTMLファイルを作成し、HTMLから自動ジャンプでマクロのアドレスを実行するようにして対応しています。

例えば、"マクロファイル名.iim"を自動実行したい場合
<meta http-equiv="RERESH" content="0;URL=http://run.imacros.net/?m=マクロファイル名.iim">
と記述したAAA.htmlファイルを作成し、
"C:\Program Files\Mozilla Firefox\firefox.exe" c:\macro\aaa.html
を実行するようにしています。

自分の場合はタスクスケジューラで直接コマンド指定していますが、バッチファイルでも問題ないと思います。


#ちなみに、うちのPCは古いものを使用しており、他にプログラムが作動して処理が重くなっている時など、まれにジャンプせずHTMLを表示したままという場合がありました。
    • good
    • 0
この回答へのお礼

大変遅くなりましたが、ご回答有難うございました。
私が最も望む形のスマートな対応方法でしたので、ベストアンサーとさせていただきます。

お礼日時:2010/11/07 22:32

Site Launcherのアドオンを使う方法はいかがでしょう?



1.Site Launcherで使用したいマクロを登録

2.

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("""C:\Program Files\Mozilla Firefox\firefox.exe""") 'FIREFOXの起動
WScript.Sleep(2000)
WshShell.SendKeys("%+z") 'ALT+SHIFT+zキーで選択実行
    • good
    • 1
この回答へのお礼

大変遅くなりましたが、ご回答有難うございました。

お礼日時:2010/11/07 22:32

start コマンドの直後にある " " はウインドウのタイトルとして認識されるので、


http://wiki.imacros.net/iMacros_for_Firefox#Comm … の例にあるように


start /B "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=マクロファイル名.iim

とするか


start "" "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=マクロファイル名.iim

のどちらかで試してみてください。

この回答への補足

どっちも実行できません。実際に作ってテストされました?

二つのウインドウが開いてしまうため少し見栄えは悪いですが、今のところ下のコマンドで対応しています。

start /B "C:\Program Files\Mozilla Firefox\firefox.exe" http://headlines.yahoo.co.jp/hl
ping localhost
start /B "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=rakuten.iim

引き続き一つのウインドウを開いて実行する方法を知っておられる方からのアドバイスを求めます。

補足日時:2010/09/01 22:57
    • good
    • 0
この回答へのお礼

大変遅くなりましたが、ご回答有難うございました。

お礼日時:2010/11/07 22:32

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qimacros 内でのループ処理

Javascriptとの連携ではなく、
imacros内でのループ処理の仕方を教えていただけないでしょうか。

Aベストアンサー

imacrosの繰り返し再生の機能に関連付けられた、
!LOOPという変数が存在します。
これを利用すれば、
1回目の再生の時には {{!LOOP}} という変数は数字の「1」として扱われます。
2回目の再生の時には {{!LOOP}} という変数は数字の「2」として扱われます。
ループ回数が増えるにつれ、数字が1つずつ上がっていきます。
この変数を使えば上から順番に実行させるというような処理ができますよ(^o^)

Qブラウザ起動~ログインまでのバッチ化

ブラウザを立ち上げ、特定のページにアクセスし(例えばmixi)、
IDとパスワードを入力してログイン、という作業を
バッチ化できないものかと考えているのですが、可能でしょうか?
可能でしたら、やり方を教えてください。

Aベストアンサー

ユーザ名とパスワードの入力画面は必要が無いという意見もありますが(そして mixi の場合それは真ですが)、ページによってはセッションIDなどが発行されるため、どんな時でも必要がないわけではありません。

と前置きしておいて、私だったら ruby win32ole で自動化するかなあ。
mixi だったらこんな感じ。

#!ruby -Ks
require "win32ole"
ie = WIN32OLE.new("InternetExplorer.Application")
ie.Navigate("http://mixi.jp/")
ie.Visible = true
wait_load(ie)
while ie.Busy
sleep 1
end
ie.Document.getElementByID("email").Value = "your@mail.address"
ie.Document.getElementByID("password").Value = "yourpassword"
inputs =ie.Document.getElementsByTagName("input")
inputs.item(4).click

ユーザ名とパスワードの入力画面は必要が無いという意見もありますが(そして mixi の場合それは真ですが)、ページによってはセッションIDなどが発行されるため、どんな時でも必要がないわけではありません。

と前置きしておいて、私だったら ruby win32ole で自動化するかなあ。
mixi だったらこんな感じ。

#!ruby -Ks
require "win32ole"
ie = WIN32OLE.new("InternetExplorer.Application")
ie.Navigate("http://mixi.jp/")
ie.Visible = true
wait_load(ie)
while ie.Busy
sleep 1
end
ie.Do...続きを読む

QFIREFOXでWebページを表示できるVBS

VBS超初心者です。
10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。

勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。

【いまの挙動】
VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。

【やりたいこと】
FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。)

今は以下のようなソースで使ってます。

----------------------
Sid = InputBox("ID を入力。")

Sid = Trim(Sid)

If Sid = "" Then WScript.Quit

If Len(Sid) <>14 Then

WScript.echo "ID が不正。"
WScript.Quit

End If

Set objie = WScript.CreateObject("internetexplorer.Application")

objie.navigate2 "http://★★★/" & Sid

objie.Visible = True

WScript.Quit
----------------------

「internetexplorer.Application」ではダメなことはわかるのですが
それ以上は私の知識ではお手上げでした。。

どなたか詳しいかた、アドバイスお願いします。

VBS超初心者です。
10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。

勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。

【いまの挙動】
VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。

【やりたいこと】
FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。)

今は以下のようなソースで使ってます。

----------------------
Sid = InputBox("ID を入力...続きを読む

Aベストアンサー

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run """C:\Program Files\Mozilla Firefox\firefox.exe"" ""http://★★★/" & Sid & """", vbNormalFocus, False
Set objShell = Nothing
という感じでしょうか。

Firefoxの実行ファイルのパスは、お使いの環境に合わせて変更してください。


WshShell.Runメソッドについて
http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

Firefoxのコマンドラインオプションについて
https://developer.mozilla.org/ja/docs/Mozilla/Command_Line_Options#-url_URL

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qマクロソフト

{
FirefoxにURLを入力

ページが表示されたら同じウィンド(同じタブ)にURL2を入力

ページが表示されたら同じウィンド(同じタブ)にURL3を入力

//

ページが表示されたら同じウィンド(同じタブ)にURL10を入力
}
{}部分を指定回数ループ

以上の動作を実行できるマクロソフトはありますでしょうか?

Aベストアンサー

iis じゃなくて iim でしたね。

前にのせた test.js の意味は、
{a.iimを10回実行、b.iimを1回実行}を3回実行する
でした。


a.iim を20回繰り返すには以下のようにします。

for (i = 0; i < 20; i++) {
iimPlay("a");
}

for (A; B; C) { D } は以下のような意味になります。
1.Aが1回実行される
 【i = 0 はiという入れ物に0を保存するという意味】
2.Bの式が成り立つならDを実行する。
  Bの式が成り立たないならforを終了して、}の次の処理に行く。
 【i < 20 はiが0か1か2か...18か19なら成り立つのでiimPlay("a")を実行する。
  iが20になると、i < 20は成り立たなくなるのでforが終了します。】
3.Cを実行する。
 【i++ で、iが1増える。iが0であれば、1になる。iが1であれば、2になる。】
4.2に戻る。

iという字に意味はありません。
適当な名前に変えてもいいです。
前回の test.js のように for の { } の中にもう1つ for を書く場合は、( ) の中の文字を変えないといけません。( i と j など)

iimPlay("a"); は a.iim を実行します。

プログラミングをしたことないなら for の意味は難しかったですね。

参考URL:http://wisdom.sakura.ne.jp/web/jscript/js11.html

iis じゃなくて iim でしたね。

前にのせた test.js の意味は、
{a.iimを10回実行、b.iimを1回実行}を3回実行する
でした。


a.iim を20回繰り返すには以下のようにします。

for (i = 0; i < 20; i++) {
iimPlay("a");
}

for (A; B; C) { D } は以下のような意味になります。
1.Aが1回実行される
 【i = 0 はiという入れ物に0を保存するという意味】
2.Bの式が成り立つならDを実行する。
  Bの式が成り立たないならforを終了して、}の次の処理に行く。
 【i < 20 はiが0...続きを読む

Qバッチファイルで3つChromeのウィンドウを開く

バッチファイルで、以下のように書き、Google Chromeのウィンドウを3つ起動したいです。
ですが、以下を実行すると、最初のひとつだけ開き、そのウィンドウを閉じると次のウィンドウが開きます。
同時に3つのウィンドウをバッチファイルで起動させる方法はないでしょうか?
※3つのタブではなく、3つのウィンドウです。


chrome.exe --new-window http://www.google.co.jp/
chrome.exe --new-window http://www.yahoo.co.jp/
chrome.exe --new-window http://www.goo.ne.jp/


環境
Windows7(64bit)

Aベストアンサー

新規ウィンドウで全て一括起動するなら、Startを使います。

start chrome.exe --new-window http://www.google.co.jp/
start chrome.exe --new-window http://www.yahoo.co.jp/
start chrome.exe --new-window http://www.goo.ne.jp/

QVBAにてデータが数字か文字かを判定するには

VBAにてデータが数字か文字かを判定するには、
どうすれば良いのでしょうか?

文字数は任意で決まっていません。


123 ← 数字
あい ← 文字
1F  ← 文字
G  ← 文字

Aベストアンサー

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Then
  MsgBox "文字列"
 Else
  MsgBox "その他" '代表的なものはエラー値です
 End If
End Sub

-----------------------------------------
こちらの場合は、全角数字も、数字として扱われます。

Sub Test2()
 If IsNumeric(Range("A1").Value) Then
   MsgBox "数字"
 Else
   MsgBox "数字ではない"
 End If
End Sub

こんにちは。

数字か文字かなら、IsNumeric でよいと思いますが、数値か文字かでしたら、VarType を使います。私の場合は、IsNumericは、めったに使いません。VarTypeのほうが多いですね。IsNumeric は、文字通り、文字か数字かで、文字列書式の数字も含まれます。なお、VBAでは、数字は、数値型に型キャストされますので、特に問題は発生しません。

ご参考までに。

Sub Test()
 If VarType(Range("A1").Value) = vbDouble Then
  MsgBox "数値"
 ElseIf VarType(Range("A1").Value) = vbString Th...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。


人気Q&Aランキング