最近になってバッチファイルを知りました。バッチファイルを使ってエクセルファイルの中に書かれたマクロを動かしたいと思っています。
過去ログの検索をし、マクロが書かれたエクセルを起動させるところまではわかりました。
しかしその先がわかりません。わからない内容は次の二つです。
1)エクセル起動時マクロを有効にするかどうか聞いてきます。自動的に有効で起動させるにはどうしたらいいでしょうか。
2)Macro1という名前のものが001.xlsの中に既に作ってあったとして、これを作動させるにはどのようにしたらいいのでしょうか。
環境はwin xp sp2 office2000です。
過去ログを参考にし、下記記述で001.xlsを開くところまではわかりました。この後をどうすればいいか、よろしくお教えください。
"C:\Program Files\Microsoft Office\Office\excel.exe" "c:\My Documents\001.xls"
No.1
- 回答日時:
こんにちは。
batch プログラムというのは、DOSの時代のものですね。
今の所は、Wscript プログラムを書いておきますから、メモ帳などに貼り付けて、拡張子を".vbs" にすればよいです。batch プログラムよりも遥かに優れています。
なお、(1) は、オブジェクトを作っていますから、無視されます。ただし、他人の環境では、ロックを外さないと以下は動きません。セキュリティを変更するコードは、掲示板では控えさせていただきます。
''ExcelOpen.vbs
Dim xlApp
Dim xlWb
CONST nFILE ="c:\My Documents\001.xls"
Set xlApp = Wscript.CreateObject("Excel.Application")
With xlApp
.Visible =True
Set xlWb =.Workbooks.Open (nFILE)
.Run xlWb.Name &"!Macro1"
End With
Set xlApp = Nothing
この回答への補足
早速回答いただきありがとうございます。
実は質問の中には書いていませんでしたが、マクロを作動させたいバッチファイルの中には、ディレクトリー間のファイルの移動、削除等がエクセルマクロの前後に付いてきます。
これは自分で出来るので質問の中には書かなかったのですが、マクロを作動させる部分がWscript プログラムになると流れが作れなくなってしまいます。
いまさら古いDOSというのはあるかもわかりませんが、バッチファイルの書き方で教えていただきたく、よろしくお願いいたします。
No.2
- 回答日時:
こんばんは。
>バッチファイルの書き方で教えていただきたく
マクロの呼び出しなどできるはずもありませんし、Officeのセキュリティの問題も解決しません。
かつては、私も、バッチ(Shell)プログラムをずいぶん書いていましたが、Windows が使えない環境という設定なら分かりますが、Excel自体は、Windows のアプリケーションですから、それをバッチプログラムでっていうのは、私には良く分からないです。もう、WScript でも古いというのに、なお古い方法を選ぶのは、ちょっともう世界が違うように思います。
バッチプログラムで出来ることなど、今の時代でみると、本当に限られていると思います。
>これは自分で出来るので質問の中には書かなかったのですが、マクロを作動させる部分がWscript プログラムになると流れが作れなくなってしまいます。
流れというのか何か分かりませんが、バッチプログラムが、WScriptより優れているということはありえないです。すべてを移植しても、余りあると思います。
>ディレクトリー間のファイルの移動、削除等がエクセルマクロの前後に付いてきます。
その作業程度なら、WScript に置き換えればよいのでは?それで、バッチということもないと思います。分からなければ、Shell を使えばよいです。
もし、あくまでも、バッチプログラムをお望みなら、どなたかにお任せします。
この回答への補足
何度も丁寧な回答ありがとうございます。
質問をかなりはしょっていたため、ご迷惑をおかけし申しわけありません。
今私がやっている作業は、ファイルをディレクトリー間で移動、その後そのファイルにperlのプログラムを動かし、そのデーターをエクセルに読み込みマクロを利用した後、特定の拡張子を持ったファイルを削除するという作業です。
以前は全てこれらを手作業でやっていました。
最近になってバッチファイルを知り、データーの移動、perlの利用、データー削除を自動で出来るようになり、随分便利になったのですが、エクセルの部分だけが手作業で残っているため、何か方法はないものかと質問したしだいです。
現在利用しているバッチファイルの中に、エクセルのマクロ利用も組み込めたら簡単でいいなと単純に思っていました。
バッチファイルではマクロの呼び出しが出来ないのであれば、今からWscript も覚えたいと思います。ありがとうございました。
もし出来ましたら、移動とか削除の書き方を教えていただければありがたいのですが。
No.3ベストアンサー
- 回答日時:
こんにちは。
Perl 自体は、また別というか、Wscript.Run で呼び出してもよいと思いますが、
WScript でも、Perl の複雑な処理にはかないませんが、正規表現も持っていますから、多少は似たようなマネが出来ます。
バッチプログラムと違うのは、まず、フォルダを探すことが可能だということと、フォルダを選択する、ダイアログが使えるということです。
個別のファイルのファイルの移動なら、
Const myPATH ="C:\My Documents\
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile =objFS.GetFile(myPATH & "Test.txt")
objFile.Move "C:\"
個別のファイルのファイルの削除なら、
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile =objFS.GetFile(myPATH & "Test.txt")
objFile.Delete
----------------------------------------------
ワイルドカードも使うようでしたら、
Const myPATH ="C:\My Documents\
Set objFS = CreateObject("Scripting.FileSystemObject")
objFS.MoveFile myPATH &"*.txt", "C:\"
ですし、ファイルの削除なら、
Set objFS = CreateObject("Scripting.FileSystemObject")
objFS.DeleteFile myPATH &"*.txt"
ということになります。
---------------------------------------------
なお、余談ですがVBAの技術は、今はもう停滞したままですが、総じて、テキスト・スクリプト側は、日進月歩、Win XP になってからは、1年ごとに、まるで違う技術が導入されているのです。歯が立たないかもしれませんが、どんな風になっているかは、知っておいたほうがよいかもしれません。昔は、コンパイラーを使った、実行ファイルしたが、今は、テキスト・スクリプトで、ツールを出しています。それは、Office 2007 も同じですね。そして、今は、スクリプトで、.Net FrameWork まで使ってしまおうというのだから、時代は変わっているのです。(知っている人には、間が抜けた発言ですが。)
参考サイト:
ヘイ! スクリプティング ガイ
http://www.microsoft.com/japan/technet/scriptcen …
何度も丁寧な回答ありがとうございます。
WScriptは全く知らなかったのですが、教えていただいた参考サイト、かなりわかりやすいので、今から取り組んで行きたいと思います。
ありがとうございました。
No.4
- 回答日時:
Dim obj
Set obj = WScript.CreateObject("Excel.Application")
obj.Visible = True
obj.Workbooks.Open "C:\Documents and Settings\Administrator\My Documents\001.xls"
obj.Application.Run "Macro1"
上記をメモ帳に貼り付けて、適当な名前に拡張子vbsで保存して実行してください。
バッチは無理なのでこれで勘弁してください(笑)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】webアドレスにて指定されたCSVファイル【excelソフト表示】を印刷する件 1 2023/02/15 01:52
- Visual Basic(VBA) エクセルのマクロについて質問があります。 現在は下記のマクロでエクセル表を保存しています ThisW 2 2022/09/16 11:22
- Excel(エクセル) 記録マクロのみでできますか? 7 2022/08/07 20:38
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルのオートフィルターのしぼりをクリアーしたい 2 2022/12/24 08:36
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Word(ワード) office 2021へ自分用のクイックアクセスとマクロをコピーしたい 2 2023/03/11 21:15
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
バッチファイルファイル→VBS→エクセル マクロを有効にして起動
Excel(エクセル)
-
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
-
4
バッチファイルでEXCELを起動し、マクロ処理の完了を検出する方法
その他(プログラミング・Web制作)
-
5
コマンドライン上でファイルを終了させる方法について
Windows Vista・XP
-
6
VBAでの一時停止と再開の方法
その他(プログラミング・Web制作)
-
7
バッチファイルからVBAに引数を渡したい
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルを実行後、終了...
-
リモートデスクトップの取り合...
-
Windows10のタスクスケジューラ...
-
batファイルを実行してコマンド...
-
DHCP設定バッチnetshコマンドに...
-
バッチでEnterを認識させ...
-
コマンドの結果を変数に入れたい
-
Windowsコマンドプロンプトで環...
-
oracleのimp-00002エラーについて
-
コマンドプロンプトで最新のフ...
-
バッチ実行を意図的に失敗させ...
-
WMICでリモートでバッチが実行...
-
WinSCPがタスクスケジューラで...
-
batファイルで、call使っても戻...
-
バッチファイルで自身の名前を...
-
バッチプログラムについて(編...
-
Wimで第2のWindowsのPGを起動...
-
batが実行できない
-
名前解決をバッチ処理で行うこ...
-
バッチのFOR及びIF文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10のタスクスケジューラ...
-
batファイルで、call使っても戻...
-
バッチファイルを実行後、終了...
-
リモートデスクトップの取り合...
-
DHCP設定バッチnetshコマンドに...
-
バッチプログラムについて(編...
-
バッチでEnterを認識させ...
-
バッチ実行を意図的に失敗させ...
-
DOSコマンドのforで空白行をス...
-
batファイルを実行してコマンド...
-
oracleのimp-00002エラーについて
-
コマンドの結果を変数に入れたい
-
バッチファイルを常に管理者権...
-
バッチ実行時にバッチのファイ...
-
バッチファイルでPC情報を取得する
-
batが実行できない
-
bat実行中に引数1の内容を変更...
-
WMICでリモートでバッチが実行...
-
実行結果を戻り値で取得したい
-
ログオンユーザを簡単に切り替え
おすすめ情報