• 締切済み

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

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" & "!" & "提出用作業表シート削除"でもだめでした。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

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

snobman3
質問者

お礼

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

関連するQ&A