• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2007で、Application.Runを使って、他のブック)

エクセル2007でのApplication.Run実行時エラーと解決方法

このQ&Aのポイント
  • エクセル2007でApplication.Runを使って他のブックの関数を使用しようとしたところ、実行時エラーが発生しました。
  • エクセル2007では、ブックを開くとマクロが自動的に無効になるため、マクロを有効にする方法を試しましたが解決しませんでした。
  • エクセル2007でのApplication.Runの実行方法について、他のブックを開いて処理を行う方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

>エクセル2007でApplication.Runをどうすれば実行できるでしょうか? 別に、Excel2007 でも、前のバージョンでも変わりません。 質問全体としては、分からない部分がいくつかあります。 なぜ、肝心な部分のコードを書かないで質問されているのか良く分かりません。 >next_book="test.xls" >Workbooks.Open (ThisWorkbook.Path & "\" & next_book) Excel 2007 で、旧xls ファイルを呼び出すのでしょうか? 仮に、そうであっても、開けば、 Application.Run で呼び出せるはずです。 >目的は、1というBOOKの処理が終わったら、次のブックを自動で立ち上げて、次のブックの処理スタートボタンを自動で押したいというものです。 しかし、ボタンの種類にもよりますが、Active X コントロールのボタンを、呼び出し処理は出来ないはずです。Private ステートメントが付いているはずです。それを外せばよいのですが、そんなことは、あまりしませんね。だいたい、こういう場合は、Application.Run で実行させることなどありません。 あまり凝ったことをせずに、別のブックにコードを置いて、処理するのが良いのではないかと思います。

neo1124
質問者

お礼

説明用にサンプルプログラムを作ろうとおもったら、ソチラでは動きました。 メインのプログラムがなぜ実行時エラーが出るのかはわからないままですが、確かにおっしゃる通りエクセル2007が問題ではないようです。 とりあえず、Application.Run を使わず、次のBOOKのオープンイベントで処理を開始するようにして 対応しました。 なお、xls形式を使っている理由はファイルを配布するからです。エクセル2007形式では読み取り出来ない方も居られますので。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

2007で無いですが、何か参考になれば。 XXX.xlsのModule1に Sub test02() UserForm1.Show End Sub があります。 このブックをまず開いておく。 ーーー 他のブックを開いて(新規ブックBook1。保存前)、標準モジュールに Sub test01() Application.Run "xxx.xls!Module1.Test02" End Sub を入れて 、実行すると、UserForm1が現れ、ボタンをクリックすると、クリックイベントの Private Sub CommandButton1_Click() MsgBox "SSS" Workbooks("Book1").ActiveSheet.Range("A1") = "xxxx" End Sub を入れていますが、所定の処理が実行されましたが。 (Module1の限定を入れてますか。Module2などに同名のプロシ名がある場合)

neo1124
質問者

お礼

アドバイスありがとうございました。 マクロが無効になってしまう原因はわからないままですが、別の方法で対応しました。 ちょっと不思議な現象ですが、ファイルを作りなおすと現象が治りそうな気がします。 いろいろ調べてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBA 「Application.Run」について

    職場のエクセルファイルに以下のようなコードがあります。 これはブック内の○○というマクロを実行するという意味でしょうか? (実際は~~部分に多くのコードがあり、上記のことが正しいのかよくわかりません) Sub test() ~~ Application.Run "ThisWorkbook.○○" ~~ End Sub 以上、よろしくお願いします。

  • Excelのブックを閉じる

    お世話になります。 Excel処理について質問です。 今、サーバで常にマクロが動き続けているExcelファイル(ファイルAとします)があります。 今回はそのファイルを閉じ、マクロにてシートの更新をしたのち、また開きなおしてマクロを実行させたいです。 方法としては、 1.C#から閉じて更新して開く処理を行う。 2.別のブックにファイルAを閉じる処理を行うマクロを仕込んでおき、 C#からはそのファイルを開くだけ。 が考えられると思っています。 どちらの方法でも良いので、コードの例を書いていただけないでしょうか。 ちなみに、自分の現状のコードは以下です。 (アラート非表示) for each wb in Workbooks if wb.Name <> ThisWorkbook.Name then wb.Close SaveChanges:=false end if next Application ThisWorkbook.Close SaveChanges:=false これでは、異なるブックのExcelファイルであっても、ウィンドウが分かれ てしまっていては、削除の対象になりません。 どなたか、宜しくお願いします。

  • エクセル-別のbookで同様のマクロ実行

    エクセル-別のbookで同様のマクロ実行 最初あるBook1に入っているmacro1はそのbook1のsheet1を処理するように作成しました。 次にBook1を開いたまま、Book2を開きそのsheet1に対してmacro1と同等の機能を実行したい場合は通常どうするのでしょうか。 (1) Book2にBook1のマクロをコピー (2) book2のマクロを開き、表示されるBOOK1 macro1を実行する。 (2) 場合でもうまくいくのでしょうか。Sheet1に対してやりたいことの論理は同じとします。試してみたらといわれそうですが、まず識者の説明をお聞きしたいのです。

  • Book間でのコピー

    エクセルで以下の処理を実行するマクロを知りたいのですが。 Book1とBook2が開いています。 Book2のSheet1のA1~A10を、Book2のSheet1のA1~A10にコピーします。 この処理を任意の2つのBook間で実行するためにはどんなマクロになるでしょうか。(Book3とBook5で行ったり、Book25とBook46で行ったり等) アクティブになってないBookからアクティブになっているBookにコピーするようにしたいのですが。 宜しくお願いします。

  • ExcelVBAで他ブックのマクロを動かす

    Aというブックのマクロを動かし、別ブックのコマンドボタンに埋め込まれているマクロの動作を行いたいのですがうまく行きません。 下記がコードになります。 Option Explicit Public strName As String Public strPath As String Public xlApp As Object Public xlBook As Object Public xlSheet As Object Public Function テスト処理() 'ファイル名 strName = Worksheets("名前").Range("B2") 'ファイルを置いている場所 strPath = Worksheets("名前").Range("B3") Set xlApp = CreateObject("Excel.Application") '別Excelを開く Set xlBook = xlApp.Workbooks.Open(strPath, True) 'シートの選択 Set xlSheet = xlBook.Worksheets("操作画面") xlApp.Visible = True xlApp.UserControl = True xlSheet.Activate setブック処理 End Function Public Sub setブック処理() '別ブックのマクロを動かす Application.Run (strName & "!CmdClick"), ThisWorkbook   End Sub 上記のマクロを動かすと、Application.Runの部分で下記エラーが表示されます。 実行時エラー1004 '別ブック.xls'が見付かりません。ファイル名及びファイルの保存場所が正しいかどうか確認してください。 setで飛ぶ前に別のブックは開けているので、ファイル名や保存場所は正しいと思うのですがエラーが出てしまいます。 宣言の仕方が間違っているのでしょうか? ちなみに、別ブックのコマンドボタンのマクロは下記の名称なので、マクロ名の間違いという事も無いと思います。 Private Sub CmdClick() ~処理~ End Sub

  • ブックを作成するマクロ

    エクセルで、以下のマクロを実行すると新規のブックを作成します。 Workbooks.Add この時のブック名はBook1になりますが、任意のブック名を指定するにはどうすればいいでしょうか?

  • Application.Run実行時にエラー

     Excelファイルのマクロで、デスクトップ上の別ファイル「test.xlsm」のマクロ「Macro2」を実行させるため、以下のマクロを作成し実行したところ、 以下のエラーメッセージが出て正常動作できませんでした。 何が原因でしょうか? なお、Macro2は単独で実行した場合は正しく動作しています。 よろしくお願いします。 [作成したマクロ] Sub Macro1() Application.Run "C:¥Users¥****¥Desktop¥test.xlsm!Macro2" End Sub [エラーメッセージの内容] 実行時エラー’1004’ マクロ"C:¥Users¥****¥Desktop¥test.xlsm!Macro2"を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。

  • 他ブックを実行するマクロ

    あるexcelファイル(ブック名「自動操作.xlsm」)からべつのexcelファイル(ブック名「a.xlsm」)というファイルを実行するマクロを組んでいます。 Application.Runを用いて「自動操作.xlsm」のコードを以下のように記述しました。 ※「\」は半角の円マークだと考えてくれればいいです。ここで半角の円マークをかいても\と表示されます。また、自動操作とaは同じディレクトリにあります。 Sub Test1() Application.Run "'C:Users\ディレクトリ名\a.xlsm'!test" End Sub また、「a.xlsm」は以下のように記述しました。 Sub test() Dim i As Integer For i = 1 To 5 '移動元ファイルパスの設定 Cells(i, 1) = i Next End Sub ただ1~5行にその行数を記入するマクロです。 a.xlsmを開いた状態でこれを実行すると、「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 a.xlsmを閉じた状態で実行すると、「このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります」とでます。 いったいなにを間違えているのでしょうか。

  • マクロ実行後エクセルを閉じたい

    2つの別々のファイルを開いて片方からもう片方にコピーして 保存して終了する。(両方とも閉じる) というマクロを作ったのですが コピー終了後に実行したマクロ付きのエクセルも閉じてデスクトップ上には何も開いていない状態にしたいのですがworkbookのところに 下記の命令を記述してもうまくいきません。 Application.Run "XXXXXX" ThisWorkbook.Save ThisWorkbook.Saved = True If Workbooks.Count <= 1 Then Application.Quit ThisWorkbook.Close False マクロ付きのエクセルも一旦は閉じるのですがその後に 別の白紙のブックが開いてしまうのです。 続けて他のマクロをスケジュールで実行したいのですが実行時に 「既にエクセルが開いています」みたいな警告が表示され 実行できません。 エクセルを完全に閉じるようにするにはどうしたらいいのでしょうか?

  • エクセルのブックを閉じるマクロについて

    エクセルのブックAとブックBが開いている状態で、 ブックAのボタンに登録して実行すると、ブックAのみ閉じる、 というマクロを作りました。(下部にコードを記載します) このマクロは、2つのブックが開いていると正常に稼働するのですが、 ブックが1つしかない場合、実行時エラーが出てしまいます。 (ブックAのみ開いた状態でこのボタンを押してもエラーなく閉じたい) 実行時エラーが出ないようにするにはどうすれば良いか、 おわかりの方がいらっしゃいましたら教えて下さい。 どうぞよろしくお願い致します。 Sub このブックのみ閉じる() Dim wa As String wa = "ほかに無い" Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wa = "ほかにあるよ" End If Next If wa = "ほかに無い" Then Application.DisplayAlerts = False Application.Quit '終了予定 End If Range("D2").Select Selection.ClearContents ThisWorkbook.Close SaveChanges:=False End Sub

このQ&Aのポイント
  • マイナポイントで2万円相当のポイントを手に入れる方法がわからない方へ
  • マイナポータルアプリの銀行口座紐づけ作業についての問題解決方法
  • 年収300万以下の方にとってマイナポイントは重要な要素ですが、アプリの障害で手続きが進まない方へのアドバイス
回答を見る