
掲題の通りなのですが、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
上記の特定セルに設定してあるファイルパスを変更するためには
マクロを無効にして開かなければなりません。
マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して
該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で
マクロ無効状態で開く方法があれば、ご教授頂ければと思います。
No.2ベストアンサー
- 回答日時:
Win7、Excel2010、ダブルクリックでファイルを開く設定、の場合ですが、
Excelが開いていない状態で、
一旦、ファイル(またはショートカット)をクリックしてから、
Shiftキーを押し、そのまま、ダブルクリック、
以上の手順で、セーフモードでExcelとブックが開きます。
つまり、Private Sub Workbook_Open()は実行されません。
環境によって手順は異なると思いますけれども。
この回答への補足
昨日から他のOS・EXCEL環境にて同様の確認を
行ってみた所、Shift+ダブルクリックでマクロ無効と出来る端末もあれば
出来ない端末もあり、環境的な要因やEXCELの設定等も関係して
くるのでは無いかとの想定に至りました。
本来の用途目的は、サーバーのタスクマネージャーにマクロファイルを
設定して自動起動し、質問のマクロとは少々異なる幾つかの処理を
行っているのですが、今後他の者に該当ファイルの管理を引き継がなければならない為
自動起動せずに開く方法に、3重位の手順を作っておきたかったのですが
こちらの方法は環境に依存する可能性がありますので、手順に含める事を断念致しました。
ただ質問させて頂いた目的に対し、手法として出来る操作である事は間違いありませんので
度々の分かりやすい説明を踏まえた回答を頂いた点より、ベストアンサーとさせて頂きます。
また、他の方々におかれましても、ご回答・アドバイス本当にありがとうございました。
ご回答ありがとうございます。
当方の環境は、WindowsXP+EXCEL2010環境になります。
Shift キーを押しながらダブルクリックや
右クリックメニューの開く・編集・読み取り専用で開くを
試してみましたが、マクロ無効状態になりませんでした。
色々と試していた所、別途EXCELを起動しておいて
メニューよりファイルを開く際に、Shift+開く では
マクロが実行されずに開く事が出来ました。
直接、該当のファイルを開く場合は、Shift+ダブルクリック(開く)等では
Workbook_Open が実行されてしまいます。
EXCELの設定の問題でしょうか?
なお、マクロセキュリティは「すべてのマクロを有効」の設定環境となります。
No.6
- 回答日時:
確認しました。
エクスプローラからでは、Shift + も、Ctrl+ も、どの方法も出来ませんでした。特に、エクスプローラ上からでは、Shift + は、多くのファイルが選択されてしまうので、ヒヤッとしました。
メニューから、Ctrl + で、Excelを選択する方法は、セーフモードで立ち上がるから、それは、それでもよいと思うのですが、それは目的とは違うようです。
今のところ、Excel 2010はないのですが、
私が行う場合(Auto_Openの自動実行をさせないために)は、
最初に、Excelで、新規ワークブックが立ち上げます。
次に、Excelのメニューから、ファイル名を選び、
Shiftキーを押しながら、ファイル名を選び、クリックします。
そうすれば、Auto_Openは実行されません。
ところで、話は別ですが、質問のマクロは、少し危ういような気がしますが。
今回のことで、ファイル名を別のブックにしたり、テキストにしたり、iniファイルにしたりする方法もあるのではないかと思います。
サンプルを作ってみました。
以下は、ブックと同じフォルダに、"FileNames.txt"を置いて使うものです。
FileNames.txt の中身は、
-------------
f120929.xls
f121002.xls
f121005.xls
f121008.xls
-------------
のようになっています。もし、自動実行を止めたい場合は、テキストファイルの先頭に、ありえないファイル名を書けば、エラーが出て止まります。fAr(10)は、現在9個ですが、この数を増やせば、もっとブックが開けます。常識的な範囲で入れれば良いです。
'//
Private Sub Workbook_Open()
Dim Fno As Integer
Dim f As String
Dim mPath As String
Dim fAr(10) As Variant 'ファイルリストは9個まで、最後は空ける
Dim i As Long
Dim j As Long
'ファイルリストは、このブックと同じフォルダに置かなくてはなりません。"
Const FILE_LIST As String = "FileNames.txt"
On Error GoTo ErrHandler
mPath = ThisWorkbook.Path & "\"
Fno = FreeFile()
If Dir(mPath & FILE_LIST) = "" Then
MsgBox "file list が見つかりません。", 48
Exit Sub
End If
Open mPath & FILE_LIST For Input As #Fno
Do While Not EOF(Fno)
Line Input #Fno, f
fAr(i) = f
i = i + 1
Loop
For j = 0 To UBound(fAr) - 1 '最後のIndex は、必ず開けます。
Workbooks.Open fAr(j)
If fAr(j + 1) = "" Then Exit For
Next j
ThisWorkbook.Close False
ErrHandler:
MsgBox Err & Err.Description
End Sub
ご回答、アドバイスありがとうございます。
実際のマクロの内容は INIファイルの参照も含めて
様々な事をしており、普段はサーバーのタスクスケジュールで
設定して幾つかの処理を自動で行わせているのですが
質問として上げるのに辺り、短絡的に作った内容なのです。
他の者が今後管理する事になり、これまではINIファイルにマクロ自動起動の
フラグを持たせて管理をしていたのですが、それ以外にも2重3重の防衛手段
(フラグの書換を忘れていてもリカバー出来る様に)手順を考えていたので
そのうちの1つとして、質問させて頂きました。
あと、提示頂いたサンプルですがINIファイル内容より、ファイル名を取得してきたら
Dir関数等でファイルの存在チェックを掛けると、更に良いと思います。
No.5
- 回答日時:
#2、3、cjです。
すみません。訂正だけ。
#2
(誤)
> 以上の手順で、セーフモードでExcelとブックが開きます。
(正)
以上の手順で、デザインモードでExcelとブックが開きます。
セーフモードはCtrl+でアプリケーション開くやつでしたね。
失礼しました。
度々ありがとうございます。
セーフモード、デザインモードの認識が
これまで無かったので勉強になります。
わざわざ、ありがとうございます。
No.4
- 回答日時:
落ち着いてゆっくりいきましょう。
エクスプローラーなどで、シングルクリックでファイルを選択。
その後、Shift+Enterキーで開く動作、ファイルが開ききるまでShiftは押しっぱなし。
言ってみれば、ダブルクリックと同じ動作なんですけどね。
選択して、一呼吸おいて、開いてみませんか。
ご回答ありがとうございます。
記載頂いた内容は、先の回答や私なりに調べた内容から
認識しておりますので、問題ございません。
ダブルクリック以外にも、該当ファイル選択してから
(1度クリックして選択されている状態)
右クリックメニューを開き、Shiftキーを押下しつつ「開く」や
Shiftキーを押下しつつ、右クリックメニューを開き
「編集」・「読み取り専用で開く」等 ※Shift+右クリック専用メニュー
Shiftキーを押下するタイミングや、押し続けているタイミング等も
色々と試してみても、マクロ無効状態で開けないので
環境的な問題なのかもと思ってきております。
該当ファイル以外にも、類似の WorkBook_Open で処理を行う
マクロを組んだXLSMファイルを作成して試してみておりますが
同じ状態であるため、ファイルの問題では無さそうなのです。
・・・あと自分の掲載した質問への追記的なものってどうやるんだろう・・・;
No.3
- 回答日時:
こんにちは。
#2、cjです。解決策は見つけたということのようですので、よかったです。
でもまぁ、できれば簡単な方が良いかな?色々方法があった方がよいかな?
ということもあって、一応、もう一度レスしてみます。
私の#2、
> 一旦、ファイル(またはショートカット)をクリックしてから、
これ↑伝わっていますでしょうか?
対象ファイルのアイコンがアクティブな状態にしてから
Shift + ダブルクリック、という意味ですので、
いきなり、Shift + ダブルクリック、ではうまくいかないです。
もっとも、Vista環境は私の方、確認しようがないので、OSの問題で違っていたとしても
不思議ではありませんが。
度々のご回答ありがとうございます。
> 一旦、ファイル(またはショートカット)をクリックしてから、
こちらの意味は重々理解しております。
ダブルクリック以外にも、該当ファイル選択してから
(1度クリックして選択されている状態)
右クリックメニューを開き、Shiftキーを押下しつつ「開く」や
Shiftキーを押下しつつ、右クリックメニューを開き
「編集」・「読み取り専用で開く」等 ※Shift+右クリック専用メニュー
Shiftキーを押下するタイミングや、押し続けているタイミング等も
色々と試してみても、マクロ無効状態で開けないので
環境的な問題なのかもと思ってきております。
該当ファイル以外にも、類似の WorkBook_Open で処理を行う
マクロを組んだXLSMファイルを作成して試してみておりますが
同じ状態であるため、ファイルの問題では無さそうなのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセルVBA ファイルOPEN時のマクロを動作させたくない
Visual Basic(VBA)
-
Excel起動時にマクロを実行させない
Excel(エクセル)
-
4
2010でShiftキーを使っても自動実行が動く
Excel(エクセル)
-
5
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
6
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
9
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
10
エクセル関数で日付かどうかの確認?
Excel(エクセル)
-
11
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
12
VBAにおいて、ファイルの移動にMoveFileを使っていますが、
Visual Basic(VBA)
-
13
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
14
マクロで、次のコードへ行く前に時間をおくにはどうしたらいいのでしょうか?
その他(Microsoft Office)
-
15
ファイルを開かずにマクロを実行
Excel(エクセル)
-
16
ExcelVBAで質問です。Workbook_openイベントが発生し
その他(Microsoft Office)
-
17
エクセルStatusBar表示が変化しない
Excel(エクセル)
-
18
マクロ F8が効かない
Excel(エクセル)
-
19
【VBA】エラー処理で別プロシージャに飛ばす方法
Visual Basic(VBA)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルマクロで不特定なファ...
-
5
ファイルを開かずにマクロを実行
-
6
フォルダ内のexcelファイルを順...
-
7
accessフォルダを移動したらフ...
-
8
VBAでワークブックの名前を変数...
-
9
フォルダ内のブック全部にパス...
-
10
エクセル 複数ファイルの一括...
-
11
EXCELが終了できません
-
12
<ACCESS VBA -> EXCEL>getObjec...
-
13
vlookup関数の引数を変数で指定...
-
14
エクセルVBA 上書き保存禁止と...
-
15
エクセル(マクロ)のファイル...
-
16
VBA EXCELファイル選択⇒指定セ...
-
17
エクセルのデータの別ファイル...
-
18
ファイルの保存場所を変えたら...
-
19
エクセルのxls形式からxlsx形式...
-
20
Excelのマクロでファイルを開く...
おすすめ情報
公式facebook
公式twitter