• ベストアンサー

VBA マクロ付きExcelファイルを無効で開く

タイトルの通り、マクロを含むExcelファイルを、マクロ無効でオープンしたいのですが、そういうことは出来るでしょうか? 新規ファイル作成.xlsというマクロがあって、temp.xlsというマクロを含んだファイルをnew.xlsというファイル名でコピーし、それをオープンしてデータを追加して終了。 次にそのnew.xlsをオープンした時にはtemp.xlsに含まれるマクロが実行される・・・ というようなことをしたいと思っています。 もしくは新規ファイル作成.xlsのマクロから、直接new.xlsのファイルにコーディングが可能であれば、それでも良いのですが・・・ データベースから表を作成し、作成後の変更データを再度データベースへ戻す、ということがやりたいのですが、上記の方法しか思いつきません。 もし上記の方法が出来ない場合は、別の方法がありますでしょうか? どなたかアドバイス、よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1の方への補足から、B.xls の WorkBook_Open に UserFormを開くイベントがあり、マクロから B.xls を開いた場合は実行したくないって事だと判断しました。 意味が違ったら読み飛ばしてください。Excel97で確認してます。 A.xls と B.xls が同じフォルダ内にあるとして Sub Test() Dim motoB As String, copyB As String, wb As Workbook  motoB = ThisWorkbook.Path & "\B.xls"  copyB = ThisWorkbook.Path & "\New.xls"  FileCopy motoB, copyB       'B.xlsをコピー  Application.EnableEvents = False 'イベントを一時無効化  Set wb = Workbooks.Open(copyB)  'B.xlsのコピーを開く  Application.EnableEvents = True  'イベントを有効に戻す  'ここから  wb.Worksheets(1).Range("A1") = Now  wb.Save  wb.Close  'ここまではサンプルとして適当な処理 End Sub また、別の方法として B.xls の WorkBook_Open を止めて、標準モジュールに Sub Auto_Open()  UserForm1.Show End Sub のようにすると A.xls 側で EnableEvents を使わなくても Auto_Open は実行されません。

sky_blue
質問者

お礼

お礼が遅れて申し訳ありません! はい、papayukaさんが冒頭で言われている事をしたいと思っていました。 EnableEventsというプロパティ?は知りませんでした。 これが処理を止める方法なのですね。 助かりました、ありがとうございました。

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

その他の回答 (1)

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

すいません。何をされたいのか良く理解できないのですが。 とりあえず、new.xlsというファイルが開かれる時に マクロが実行されたりされなかったりを選択したいということであるなら どこかのセルに値を書いておけばよいんじゃないかなと。 Openイベントでその値を読み込み 0ならマクロ発動、1なら何もしない。 まぁこれでもマクロは実行はされていますがw

sky_blue
質問者

補足

分かりにくい説明で申し訳ありません! 一言で言えば「マクロを含む新規Excelファイルを作成する」マクロを作成したいということなんです。 A.xlsというマクロがあって、これはB.xlsというマクロを作るマクロです。 ですので結局、A.xlsでB.xlsを作成する時に、マクロを記述できる方法があれば、それでも構わないんですが、それも分からなくて・・・ それで最初からB.xlsのマクロを用意しておいて、A.xlsでは、そのマクロをコピーするだけにしようと思っていたのですが、B.xlsのマクロは有効で開くとフォームが出力されるようになっています。 現状では、A.xlsからB.xlsのデータを処理しようとファイルを開いてもマクロが有効になってフォームが出力されてしまうんです・・・それを解消する方法はないかと、マクロからマクロを無効で開く方法はないかと思いました。 こんな説明でお分かり頂けるでしょうか・・・ (なんだか書けば書くほど分かりにくくなってきたような気がします・・・すみません) また何かありましたら、よろしくお願いします。 ありがとうございました。

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

関連するQ&A

  • エクセルVBA ファイルが開かない

    Windows XP 2台で使用していますが、1台は下記、記述でファイルが開き、片方は、ファイルが開きません。 何か、記述に問題又は、追加等が必要なのか教えてください。  TFILE = "C:\TEMP\売上データ.XLs"  Workbooks.Open TFILE  よろしくお願いします。    

  • EXCELマクロを無効にして開く方法

    掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を マクロ無効の状態で開く方法が分からず困っております。 マクロの内容は Workbook_Open 処理で、特定セルに入力されている EXCELファイルを開き、自身は閉じるというものです。 Private Sub Workbook_Open() Dim FileName As String '1ファイル目 Range("A2").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate '2ファイル目 Range("A3").Select FileName = ActiveCell.FormulaR1C1 Workbooks.Open FileName:=FileName ThisWorkbook.Activate ・・・・・・繰り返し DoEvents ThisWorkbook.Close End Sub 上記の特定セルに設定してあるファイルパスを変更するためには マクロを無効にして開かなければなりません。 マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して 該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

  • エクセル VBA マクロを動かしたときに元々開いているファイルを閉じる・・・

    いつも皆様には大変お世話になっております。 早速質問ですが、 「もしこのマクロが動く時点で他のExcelファイルが開いていたら、警告の上 自ファイルを閉じる、開いていなければ~実行」 という処理をかませたいと思っております。 ここの判定の方法がわかりません。(既にExcelが起動されていたら、でもいいのでしょうか。。。?) 下記のようなマクロを組んでいるので 他のファイルが開いていると厳しい状況です。 bname = "C:\" & Format(Range("q1").Value, "yyyymmdd") & "サンプル" & ".xls" ActiveWorkbook.SaveAs bname Workbooks.Open "C:\サンプル.xls" Workbooks(1).Close 本当は"yyyymmdd"&"サンプル"&".xls"ファイルだけ閉じられればいいのですが、自分の知識では上記のような形でしか動かせません;; もしご存知の方、ご教示ください。よろしくお願いします

  • エクセル マクロが無効になる

    エクセル マクロが無効になる エクセル2003でマクロを作り、2007や2010でそのファイルを開くと互換モードのファイルが開きマクロが無効になってしまいます。セキュリティセンターのマクロの設定の「すべてのマクロを有効にする」にするとマクロが動き出します。マクロの設定を開かなくてもマクロが有効になる方法はないのでしょうか。(このデータを職場のコンピュータの堪能でない人も使うため複雑な方法はできるだけ省きたいのですが)

  • マクロを含んだエクセルファイルについて

    どうしてもやり方がわからず、質問させていただきます。 マクロを含んだエクセルファイルを「マクロを無効にする」で開いた時に、使用不可にしたい(若しくは開かずに閉じたい)のですが、どのようにコーディングしたらよいのでしょうか。

  • エクセルマクロで教えてください。

    先日、皆様から質問の内容がわからないとのお叱りを受けた者です。しばらく出張で不在にしており、昨日出社し皆様からのお叱りに対しもっともであり、質問の内容をうまく伝えられなかった事を反省しております。申し訳ありません。 以下に書いた内容ではいかがでしょうか? アクティブにしないで、ファイルをオープンさせたいのです。 内容:KYAKU_A.XLSを始にオープンします。そのKYAKU_A.XLSには、マクロで、MAST.XLSをAUTO OPENのみのマクロを入れております。そのオープンの内容は次のとおりです。 Workbooks.Open Filename:="C:\Documents and Settings\owner\My Documents\見積書\マクロ.xls" Application.Run "マクロ.xls!流れ" を行い、マクロのみの記載されたXLSを走らせます。 KYAKU_A.XLSのほかに_Bや_Cなど数多くのXLSから、同じMAST.XLSとマクロ.XLSを走らせたいのです。 その際に教えていただきたいのは、MAST.XLSとマクロ.XLSは上記の方法ですとアクティブになってしまいます。画面上では、操作の関係から、KYAKU_A.XLS等の客先内容のみをアクティブにしておきたいし印刷もその客先内容を行うマクロにしたいのですが、MAST.XLSとマクロ.XLSをアクティブにしなければ可能ではないかと思いますが、どなたかどうすれば良いかまた、そのマクロはどのように記載すれば良いかを教えていただきたくお願いします。

  • 【大至急】excel2003 VBAマクロの質問

    excel2003でのVBAマクロを作っているのですが、いまいちよくわからないのです 下記条件を満たすサンプルコードのご教示をお願いします。 ■初期状態 仮にフォルダ、ファイル配置が下記の通りだとします C:\マクロ.xls C:\template.xls C:\aaa\ C:\bbb\bbb_test.xls C:\ccc\ . . . C:\nnn\ ■動作要件 (1)マクロ.xlsは自分のファイルパスを検索する (2)マクロ.xlsと同じフォルダにあるサブフォルダ配下に、各々フォルダ名_test.xlsというファイルを作成する (3)上記(2)で.xlsファイルを作成するとき、template.xlsをコピーして作成する (4)既にサブフォルダ配下に***_test.xlsファイルが存在する場合は作成しない <マクロ実行後の状態> C:\マクロ.xls C:\template.xls C:\aaa\aaa_test.xls ←template.xlsからコピー作成 C:\bbb\bbb_test.xls ←ファイル作成、上書きはしない C:\ccc\ccc_test.xls ←template.xlsからコピー作成 . . . C:\nnn\nnn_test.xls ←template.xlsからコピー作成 (5)上記(1)-(4)を、フォルダがなくなるまで繰り返す 以上です。よろしくお願いします。

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

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

  • エクセルのマクロで

    いつもお世話になっております。 エクセル2000ですが、 別のファイルを開いて、そのファイル上で マクロを実行させるときは、 orkbooks.Open Filename:= _   "◆◆◆.xls" '以下実行させるマクロの記述 '(例)◆◆◆上に、データをペーストとか としていますが、 ◆◆◆を別の作業で開いたままですと、 当然この上記マクロが動いてくれなくなってしまいます。 そこで、 1:◆◆◆が開いているかどうか判定する。 2:開いていれば◆◆◆をアクティブにしてマクロ実行 3:開いていなければ、◆◆◆を開いてマクロ実行  とするためには、 どのように記述したらよろしいでしょうか? わかりづらければ、補足しますので、 よろしくお願いします。

  • AccessからExcel内のマクロ無効について

    いつもお世話になっております 以下の内容についてご存知の方、ご教授お願い致します win2000 office2000 マクロを含むExcelファイル内のデータをマクロを無効にし アクセスから取り込むという処理を行いたいのですが、何故か マクロが無効になりません。WinXP、Office2000の環境ですと マクロを実行せず走るのですがwin2000だとダメです win2000だとマクロを無効には出来ないのでしょうか? Dim objMyxl As Object Dim wbk As Excel.Application Dim vrtA As Variant Dim intCnt As Integer On Error GoTo err Set objMyxl = CreateObject("Excel.Application") objMyxl.EnableEvents = False objMyxl.Workbooks.Open Filename:="C:\test\Makuro.xls"  ←マクロが走る vrtA = objMyxl.worksheets(1).Range("A1").CurrentRegion.Value objMyxl.Workbooks.Close objMyxl.Quit objMyxl.EnableEvents = True ちなみに、Excelのマクロ側はこの様な感じでテストしてます Private Sub Workbook_Open() MsgBox "open" End Sub

私がおかしいのでしょうか?
このQ&Aのポイント
  • 実母が娘が大きくなったら絶対に東京ディズニーランドでティンカーベルホテルに泊まりたいと言い出し、私はその要求に対して否定的な意見を述べたが、実母は私の意見に対して非難の言葉を返してきた。
  • 私は負け組・勝ち組という言葉に対して疑問を持ち、年収の高低だけで人を評価することはおかしいと感じている。
  • また、お金をかけることが教育に繋がるわけではなく、お金の使い方や稼ぎ方についての理解が重要だと述べたが、実母はそれを理解せずに子供の小さい時にはただお金を稼いでくるだけでいいと言ってきた。
回答を見る

専門家に質問してみよう