
掲題の通りなのですが、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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/11 13:29
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/12 10:10
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
このQ&Aを見た人はこんなQ&Aも見ています
-
Openイベントを開始させないでエクセルを開く方法を教えて下さい
Windows 10
-
エクセルVBA ファイルOPEN時のマクロを動作させたくない
Visual Basic(VBA)
-
アクセスでファイルを開いたときにマクロ実行しない方法はありますか?
Access(アクセス)
-
-
4
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
7
2010でShiftキーを使っても自動実行が動く
Excel(エクセル)
-
8
エクセルのVBA 特定のセルでエンターキーでマクロ実行
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】EXCELで読込したCSV...
-
EXCEL VBA 指定したファイルが...
-
フォルダ内のexcelファイルを順...
-
【Excel VBA】ファイル名が一...
-
エクセル(マクロ)のファイル...
-
ファイルを開かずにマクロを実行
-
Accessのaccdbファイルを起動で...
-
エクセルマクロ 異なるファイ...
-
【マクロ】名前を保存する際に...
-
accessフォルダを移動したらフ...
-
フォルダ内のブック全部にパス...
-
エクセルファイルを開く時、関...
-
秀丸:あらかじめ設定した複数...
-
エクセルマクロで不特定なファ...
-
vlookup関数の引数を変数で指定...
-
Excelファイルを開いた時に、特...
-
データ参照先が別ファイルの場...
-
フォルダ内の複数ファイルの一...
-
LTSpiceにLMV358-Nのモデルを入...
-
マクロによるハイパーリンクの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
【マクロ】名前を保存する際に...
-
フォルダ内のexcelファイルを順...
-
エクセルマクロで不特定なファ...
-
ファイルを開かずにマクロを実行
-
【Excel VBA】ファイル名が一...
-
VBAでワークブックの名前を変数...
-
データ参照先が別ファイルの場...
-
エクセル(マクロ)のファイル...
-
フォルダ内のブック全部にパス...
-
エクセル 複数ファイルの一括...
-
エクセルファイルを開く時、関...
-
秀丸:あらかじめ設定した複数...
-
EXCELマクロを無効にして開く方法
-
Excelのマクロでファイルを開く...
-
accessフォルダを移動したらフ...
-
ファイルの保存場所を変えたら...
-
エクセルファイルをHTML化する...
-
エクセルのシートの数を数えた...
-
ACCESS VBAでファイルを開くダ...
おすすめ情報