みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

他のブックのマクロが見つらない。とのエラ-について

Excel VBAで、他のブックを開きそこのマクロを動かす事をしたいのですが、マクロが見つからないとのエラーが出ます。

'ファイル作成

Dim a As Variant
Dim b As Variant

a = Worksheets("sheet3").Range("e2").Value
b = Worksheets("sheet3").Range("c2").Text

ActiveWorkbook.SaveCopyAs Filename:=b & a & "-提出用作業表.xls"
ActiveWorkbook.SaveCopyAs Filename:=ThisWorkbook.Path & "\BackUp\" & b & a & "-提出用作業表.xls"


Workbooks.Open Filename:=ThisWorkbook.Path & "\" & b & a & "-提出用作業表.xls"
Application.Run b & a & "-提出用作業表.xls" & "!" & "提出用作業表シート削除"

MsgBox "提出用作業表を作成したので、サーバーの所定の場所に保存提出して下さい"
End Sub

変数が多く見にくくて申し訳ありません。上記のとおり記述したところ、対象ファイルが開くのですが「実行時エラー.1004 マクロが見つかりません」とエラーが出ます。
しかし、エラーメッセージのなかに「'2006年12月社員1-提出用作業表.xls!提出用作業表シート削除'」と対象マクロが記述されてます。多分つまらないことを見落としているのではないかと思うのですが、理由がわかりません。ご教授お願いします。
対象マクロは、標準モジュール4に、Public Subで記載してます。This Wookbook内に記述してもだめでした。マクロの内容は、Sheetを1つ残して他を削除するというものです。

Application.Run Application.Run ThisWorkbook.Path & "\" & b & a & "-提出用作業表.xls" & "!" & "提出用作業表シート削除"でもだめでした。

投稿日時 - 2006-03-08 11:06:13

QNo.2014816

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

こんにちは。

解決してしまっていますが、ちょっと試しに考えてみました。勘違いでしたらすみません。以下の方法は、私の使っているバックアップの仕方なのです。

私が感じたのは、
>Workbooks.Open Filename:=ThisWorkbook.Path & "\" & b & a & "-提出用作業表.xls"
>Application.Run b & a & "-提出用作業表.xls" & "!" & "提出用作業表シート削除"

ブックをオープンする必要があるのかな? っていうことです。
Application.Run "' & b & a & "-提出用作業表.xls" & "'!" & "提出用作業表シート削除" だけで、Book はオープンするはずですが、それもさることながら、元のブックを閉じてよいなら、このようにすればできますね。

そうでないなら、
 .SaveAs Filename:=b & a & FNAME
  ↓
 .SaveCopy As Filename:=b & a & FNAME
です。

'--------------------------------------------
Sub TestFileBackup()
Dim a As String
Dim b As String
Const FNAME As String = "-提出用作業表.xls"
a = Worksheets("sheet3").Range("e2").Value
b = Worksheets("sheet3").Range("c2").Text

With ActiveWorkbook
 If ThisWorkbook Is ActiveWorkbook Then _
  MsgBox "このブックはコピー・マクロ用のブックです。": Exit Sub
  
 Application.DisplayAlerts = False '念のために入れました。
 .SaveAs Filename:=b & a & FNAME
 Application.DisplayAlerts = True
 CreateObject("Scripting.FilesystemObject").Copyfile b & a & FNAME, _
  ThisWorkbook.Path & "\Backup\" & b & a & FNAME
 End With
 Application.Run "'" & b & a & FNAME & "'!" & "提出用作業表シート削除"
 MsgBox "提出用作業表を作成したので、サーバーの所定の場所に保存提出して下さい"
End Sub

投稿日時 - 2006-03-08 14:08:57

ANo.1

試してないですが、
多分、モジュール名が関数名の前に必要だと思います。
"標準モジュール4.提出用作業表シート削除"

投稿日時 - 2006-03-08 11:24:21

お礼

元のシートからマクロを参照したら、他のシートのブック名が、「'」で囲んでありました。ためしにそれをつけたところうまく回りました。アドバイスの内容はまだ試しておりませんが今後同様のエラーの時に対処法として、記憶しておきます。ありがとうございました。

投稿日時 - 2006-03-08 11:37:41

あなたにオススメの質問