• 締切済み

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

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

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • ブックを開くマクロ

    マクロを使って、今開いているブックから他のブックを開くというマクロを考えています。 Workbooks.Open Filename:=ThisWorkbook.Path & "\○○.xls" でブックを開くところまでいったのですが、開いたブックから、元のブックに戻るマクロがどうしても分かりません。名前を指定すれば元のブックに戻ることはできますが、元のブックは名前が変わってしまうものなので、指定できません。そのような場合はそうすればいいのでしょうか?

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

  • 同じフォルダ内のブックを開きコピーする方法

    いろいろチャレンジしてみたのですが どうにも行き詰っております。 ご教示頂ければ幸いです。 1つのフォルダに3つ(数は固定)のシートがあります。 フォルダ名は毎回変わります。 C:\デスクトップ\作成 ├4328457 神戸 ├作成元データ(名前は固定)←Aとします。  ├1314 電源工事(名前は毎回変わります)←Bとします。 └見積.xls(名前は固定)←今回は使いません 毎回名前の変わるBを先に開き、下記の「FileOpen」マクロで Aを開きます。 Bにあるシート(数は変動)を全て、Aにあるシート(3枚固定)の前に コピーし、Bは閉じてしまい、Aにて作業をしたいと思います。 Sub FileOpen()   Dim Wb As Workbook   Dim Fname As String     Dim PathName As String    Set Wb = ActiveWorkbook   Fname = "作成元データ.xls" PathName = Wb.Path   If Right(PathName,1)="\" then   Workbooks.Open Filename:=PathName & Fname   Else     Workbooks.Open Filename:=PathName & "\" & Fname     ThisWorkbook.Active    End If End Sub 「ThisWorkbook.Active」にてBに戻しているつもりなのですが Aがアクティブのままであり、Bのシートをコピー選択できなくなってしまっています。 Sub BookOpen() Workbooks.Open Filename:=ThisWorkbook.Path & "\作成元データ.xls" End Sub こちらのように簡単な構図も試してみたのですが PESONAL.xlsbのあるフォルダ?を見に行くようでうまく「作成元データ」を開けませんでした。 お詳しい方には基本的な事かもしれませんが どうぞ宜しくお願い致します。   

  • 一つのブックで作成したマクロを複数のブックにコピーするには?

    OSはXP_SP2、EXECEのバージョンは2003です。 (たとえば) D:\testというフォルダに1.xlsから2000.xlsというシート構成同一のブックが2000個あるとします。 「1.xls」のThisWorkbookにprivate subマクロを作成してテストを行い、 その後、2.xls~2000.xlsまでのブックのそれぞれのThisWorkbookにそのマクロを一気にコピーするとかの方法があるのでしょうか?

  • エクセルマクロで、他ブックのプログラムを実行する方法

    よろしくお願いします。 A.xlsとB.xlsがあるとします。 A.xlsの中にaというマクロプログラムがあるとしまして、 この中で色々と処理をするとします。そしてその処理結果(例えばxという変数)をB.xlsの中にあるbというマクロプログラムに渡してbを実行させたいのです。 aの中で、   Application.Run "B.xls!b" と書けば、bは走ってくれるのですが、xをbに渡す方法がわかりません。   Call b(x) のような感じでできないものでしょうか? 何卒よろしくお願いします。

  • シートが表示された時にメッセージを表示したい

    win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで  ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。

  • エクセルのマクロで、他のブックを開くときについて

    マクロの記録を利用して、他のブックを開くことをしました。 マクロのモジュールを見たら、 ChDir "C:\Documents and Settings\*****\デスクトップ" Workbooks.Open Filename:="C:\Documents and Settings\*****\デスクトップ\○○.xls" となっていました。 1行目の「Chdir」というのはなんでしょう? また、2行目では開きたいブックをパスを使ってあらわしています。 今マクロを動かしているブックと同じフォルダ内にあるブックや そのフォルダから見て上位のフォルダとか、「c:」から始まる パスを使わないような書き方はあるのでしょうか? ご助言お願いします。

  • ブックのopenについて

    デスクトップにファイル名「A.xls」と「B.xls」が有ります。「B.xls」はファイル名が変わるため「A.xls」のsheet1のセルA1に「B.xls」のファイル名を記載して「A.xls」と「B.xls」を共に開き「A.xls」にマクロを記述して処理をしています。この処理をする際に最初から「B.xls」を開かずにマクロでセルA1に記載したファイル名を使って「B.xls」ファイルを開くための記述を教えてください。現在のマクロの最初の部分は以下のようになっています。よろしくお願いします。 Sub Macro1() Dim nextyearbookname As String nextyearbookname = Range("A1") & ".xls"   ThisWorkbook.Activate Worksheets("sheet1").Range("B20:B21").Select Selection.Copy  Windows(nextyearbookname).Activate

  • 他のブックから特定のシートを自ブックに取り込みたいのですが

    目的は月末に提出される従業員からの当月月報を簡便に集計する事前準備で、内容は、従業員が提出する月報.xlsの集積フォルダ「月報管理」に保存された複数の月報.xlsを個々に開き、就業時間が記載された対象sheetを予め作成した自ブック「月報管理.xls」にそれぞれコピーし、個々に開かれた月報.xlsを一括して閉じるまでの作業をマクロ化出来ないかということです。 初心者のため、こちらのようなサイトを多々巡り、途中までは必要部位を真似て作成したのですが、選択したシートを自ブックにコピーする段階で先に進めなくなりました。 恐れ入りますが、何方様かご教授いただけませんでしょうか? また、同様の作業を更に簡便なマクロに置き換えらても構いませんので、何卒、宜しくお願い致します。 参考までに、従業員が提出する月報は作成する際のマクロによってファイル名とsheet名を同一にしております。 例) Aさん*月分.xls 内に Aさん*月分sheet含む Bさん*月分.xls 内に Bさん*月分sheet含む Cさん*月分.xls 内に Cさん*月分sheet含む ↓ 自ブックに設定したマクロです ↓ Private Sub CommandButton1_Click() '1,ファイル名の取得 Dim myFolder As String 'ドライブ、フォルダ Dim filename As String 'ファイル名 myFolder = "C:\Documents and Settings\nobita\デスクトップ\月報集計" filename = Dir(myFolder & "\" & "*.xls") Do While filename <> "" filename = Dir() Loop '2,フォルダ内「月分」が含まれるファイルを開く Dim i As Integer With Application.FileSearch .NewSearch .LookIn = myFolder .filename = "*月分*.xls" .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For i = 1 To .FoundFiles.Count Workbooks.Open filename:=.FoundFiles(i) Next Else MsgBox ("該当ファイルが見つかりません。") End If End With '3,開いたファイル内の共通対象シート(*月分*)を選択 Dim myWS As Worksheet For Each myWS In Worksheets If myWS.Name Like "*月分*" Then   If ActiveSheet.Name Like "*月分*" Then myWS.Select (False) Else myWS.Select End If End If Next '4,3で選択されたシートを自ブックにコピー '5,2で開いたファイルを閉じる End Sub

専門家に質問してみよう