マンガでよめる痔のこと・薬のこと

バッチファイルからエクセルのマクロを動かそうとしているのですが、
処理はきちんと動いて処理を行なうのに、エラーウィンドウが出力され
”未知実行時エラーです”(画像添付)となり困っています。
どうすれば、このエラーを無くせますでしょうか?

因みにバッチファイルは以下の通りです。

Dim obj

Set obj = WScript.CreateObject("Excel.Application")

obj.Visible = True

obj.Workbooks.Open "C:\Documents and Settings\ne05576\My Documents\Datamove.xls"

obj.Application.Run "FileMove"

よろしくお願いします。

「バッチファイルからVBA実行でエラー」の質問画像

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

A 回答 (1件)

おそらく「FileMove」のマクロの記述に誤りがあるのだと思います。



FileMoveの記述を単純に以下にしてテストしたところ、こちらの環境では何の問題もなく動作しました。

Sub FileMove()
MsgBox "OK"
End Sub
    • good
    • 0
この回答へのお礼

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

どうやらEND SUBの前に、ENDで処理を終わらせている部分があった為だったようです。
プログラムを直したら正常終了し、エラーウィンドウは出力されませんでした。

お礼日時:2012/12/04 16:22

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

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

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

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

Qバッチファイルでエクセルのマクロを動かしたい

最近になってバッチファイルを知りました。バッチファイルを使ってエクセルファイルの中に書かれたマクロを動かしたいと思っています。
過去ログの検索をし、マクロが書かれたエクセルを起動させるところまではわかりました。
しかしその先がわかりません。わからない内容は次の二つです。
1)エクセル起動時マクロを有効にするかどうか聞いてきます。自動的に有効で起動させるにはどうしたらいいでしょうか。
2)Macro1という名前のものが001.xlsの中に既に作ってあったとして、これを作動させるにはどのようにしたらいいのでしょうか。
環境はwin xp sp2 office2000です。
過去ログを参考にし、下記記述で001.xlsを開くところまではわかりました。この後をどうすればいいか、よろしくお教えください。
"C:\Program Files\Microsoft Office\Office\excel.exe" "c:\My Documents\001.xls"

Aベストアンサー

こんにちは。

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/scriptcenter/learnit.mspx

こんにちは。

Perl 自体は、また別というか、Wscript.Run で呼び出してもよいと思いますが、
WScript でも、Perl の複雑な処理にはかないませんが、正規表現も持っていますから、多少は似たようなマネが出来ます。

バッチプログラムと違うのは、まず、フォルダを探すことが可能だということと、フォルダを選択する、ダイアログが使えるということです。

個別のファイルのファイルの移動なら、

Const myPATH ="C:\My Documents\

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objF...続きを読む

QVBScriptからEXCELのVBAコマンドを実行するには?

VBScriptからEXCELのVBAコマンドを実行するにはどうしたら良いでしょう?

例)
Set P_OBJEXCEL = CreateObject("Excel.Application")
※ここで EXCEL VBA の Chdir "N:\"を行いたい
W_INFILE = P_OBJEXCEL.Application.GetOpenFilename("EXCEL(*csv),*.csv",,"入力ファイル")
P_OBJEXCEL.Application.Quit

環境→EXCEL2000+Windows2000+IE6
目的→入力ファイルを取得ため、N:\配下をGetOpenFileNameにて開きたい
※EXCELのデフォルトパスを変更したくないため

何かヒントを御願いします

Aベストアンサー

> 目的→入力ファイルを取得ため、N:\配下をGetOpenFileNameにて開きたい

ファイル名の取得だけなら、こういうのじゃダメですか?
Excel で開くなら、この後で Workbooks.Open で開けば良いですし。。

なお、字下げは全角SPでしてますので、実際にテストするときは、
タブに置換して下さい。

With CreateObject("MSComDlg.CommonDialog")
  '.CancelError = True
  .MaxFileSize = 256
  .InitDir = "N:\"
  .DialogTitle = "ファイルを開く"
  .Filter = "TEXT (*.csv)|*.csv|すべてのファイル (*.*)|*.*"
  .ShowOpen
  MsgBox .FileName
End With

あと、

> ※EXCELのデフォルトパスを変更したくないため

この意味が良くわからないです。

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
'-------------------------------------
 
 

QvbsからのExcelマクロ呼び出しの際に保存ダイアログが表示されてしまう

vbsからExcelのマクロを呼び出しExcelを閉じる処理を以下のように実施しています。
その際に保存ダイアログが表示されてしまうため非表示としようとコメントアウトされている
ように変更しました。
そしたらダイアログは表示されなくなりましたがstrTextの値が返却されなくなってしまいました。
原因がよくわからないのですがわかりましたらご教授ください。

Set oApp = CreateObject("Excel.Application")
oApp.Workbooks.Open WScript.Arguments(0)

strText = oApp.Run("CheckText")

oApp.DisplayAlerts = False
'oApp.Workbooks.Close saveChanges:=False
oApp.Workbooks.Close

Set oApp = Nothing
WScript.echo(strText)

Aベストアンサー

こんばんは。

単体でファイルを開けたら、単体でファイルを閉じればいいのでは?
その時に、ファイル変更のSaved =False は、初めて通用するはずです。
後は、CheckText の内容ですが、CheckTextの戻り値が、
strText に入っているかの確認はしていません。

できれば、On Error Resume Next を入れておいたほうが無難だと
は思いますが……。

一例:
'-------------------------------------
Set oApp = CreateObject("Excel.Application")
Set xlWb =oApp.Workbooks.Open(WScript.Arguments(0))
strText = oApp.Run("CheckText")
xlWb.Close False
Set oApp = Nothing
WScript.echo(strText)
'-------------------------------------

こんばんは。

単体でファイルを開けたら、単体でファイルを閉じればいいのでは?
その時に、ファイル変更のSaved =False は、初めて通用するはずです。
後は、CheckText の内容ですが、CheckTextの戻り値が、
strText に入っているかの確認はしていません。

できれば、On Error Resume Next を入れておいたほうが無難だと
は思いますが……。

一例:
'-------------------------------------
Set oApp = CreateObject("Excel.Application")
Set xlWb =oApp.Workbooks.Open(WScript.Arguments(0))
s...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

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

QEXCELを開いてマクロを自動起動させるジョブを作りたい

どなたか教えてください。
マクロを組み込んだEXCELを開いてマクロを実行し、クローズするという一連の動作をジョブに組み込みたいと思っています。
これは可能でしょうか? 
環境はWindowsです。 
EXEファイルなどで実行させるように組み込めるといいのですが、
もし方法があれば教えてください。
よろしくお願い致します。

Aベストアンサー

OLE オートメーションで出来ると思います

言語が何なのかわからないので、
とりあえず vbスクリプトで説明します
他の言語の場合、その言語でOLEオートメーションを
調べてください
他の言語+ EXCEL.Application
で検索すればたいてい出てきます。

事前に C:\ にBook1.xls があるとして
その Book1.xls に Macro1() というマクロがあるとして

以下の手順

メモ帳を開き、下記プログラムをコピペ
ファイル名を、test.vbs として保存
test.vbs をダブルクリックすると
EXCELが立ち上がり、C:\Book1.xls をオープンして
Macro1 マクロをコールします。

Dim exApp
Set exApp = Wscript.CreateObject("Excel.Application")
exApp.Visible = True
exApp.Workbooks.Open ("C:\Book1.xls")
exApp.Run ("Macro1")
exApp.Quit
Set exApp = Nothing

OLE オートメーションで出来ると思います

言語が何なのかわからないので、
とりあえず vbスクリプトで説明します
他の言語の場合、その言語でOLEオートメーションを
調べてください
他の言語+ EXCEL.Application
で検索すればたいてい出てきます。

事前に C:\ にBook1.xls があるとして
その Book1.xls に Macro1() というマクロがあるとして

以下の手順

メモ帳を開き、下記プログラムをコピペ
ファイル名を、test.vbs として保存
test.vbs をダブルクリックすると
EXCELが立ち上がり、C:...続きを読む

QVBSCRIPTで返されるErr.Numberの意味について

VBscriptで実行時にErr.Numberオブジェクトに返される番号の意味について教えてください。
または参考となるサイト云々の情報でも結構です。
よろしくお願いします。

Aベストアンサー

Windows Script ドキュメント
(http://www.microsoft.com/japan/msdn/scripting/default.asp
からダウンロードできます。)

目次
+VBScript
+リファレンス
+エラー
にエラー番号と内容の対応表があります。
また、Err.Description
でErr.Numberに対応する説明が取り出せるので、これを利用して、一覧表を作ることもできます。

ErrList.vbs
----------------------------------------------------------
On Error Resume Next
dim i
for i=1 to 5021
Err.Raise i
if Err.Description <> "未知の実行時エラーです。" then
WScript.Echo "" & i & ":" & Err.Description
end if
Err.Clear
next
-----------------------------------------------------------
コマンドプロンプトで
Cscript //nologo ErrList.vbs >err.txt
のようにして一覧表を作れます。

1000番台のエラーは構文エラーです。
それ以外は実行時エラー。

Windows Script ドキュメント
(http://www.microsoft.com/japan/msdn/scripting/default.asp
からダウンロードできます。)

目次
+VBScript
+リファレンス
+エラー
にエラー番号と内容の対応表があります。
また、Err.Description
でErr.Numberに対応する説明が取り出せるので、これを利用して、一覧表を作ることもできます。

ErrList.vbs
----------------------------------------------------------
On Error Resume Next
dim i
for i=1 to 5021
Err.Raise i
if Err.Description <> ...続きを読む

Qバッチファイルでサーバーのファイルをクライアントへコピーしたい

サーバーに保存されているファイルを、
クライアントのCドライブへコピーしたい。

各クライアントにバッチファイルを配布して、
それを実行するだけでコピーされるようにしたいのです。

初心者で申し訳ないのですが、何卒よろしくお願いします。
------------------------

下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。
しかし、コピー先はバッチファイルを実行したクライアントのローカルディレクトリにしたいのです。

copy \\サーバー名\フォルダ名\ファイル名 C:\

Aベストアンサー

>下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。

そんなはずはありません。何かの勘違いでしょう。

>copy \\サーバー名\フォルダ名\ファイル名 C:\

だと、バッチファイルを実行したPCのC:\にコピーされます。

copy \\サーバー名\フォルダ名\ファイル名 C:
と、最後の \ を削れば、バッチファイルがあるのと同じディレクトリにコピーされます。

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング