アプリ版:「スタンプのみでお礼する」機能のリリースについて

掲題の通りなのですが、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


上記の特定セルに設定してあるファイルパスを変更するためには
マクロを無効にして開かなければなりません。

マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して
該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で
マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

A 回答 (6件)

Win7、Excel2010、ダブルクリックでファイルを開く設定、の場合ですが、


Excelが開いていない状態で、
一旦、ファイル(またはショートカット)をクリックしてから、
Shiftキーを押し、そのまま、ダブルクリック、
以上の手順で、セーフモードでExcelとブックが開きます。
つまり、Private Sub Workbook_Open()は実行されません。
環境によって手順は異なると思いますけれども。

この回答への補足

昨日から他のOS・EXCEL環境にて同様の確認を
行ってみた所、Shift+ダブルクリックでマクロ無効と出来る端末もあれば
出来ない端末もあり、環境的な要因やEXCELの設定等も関係して
くるのでは無いかとの想定に至りました。

本来の用途目的は、サーバーのタスクマネージャーにマクロファイルを
設定して自動起動し、質問のマクロとは少々異なる幾つかの処理を
行っているのですが、今後他の者に該当ファイルの管理を引き継がなければならない為
自動起動せずに開く方法に、3重位の手順を作っておきたかったのですが
こちらの方法は環境に依存する可能性がありますので、手順に含める事を断念致しました。


ただ質問させて頂いた目的に対し、手法として出来る操作である事は間違いありませんので
度々の分かりやすい説明を踏まえた回答を頂いた点より、ベストアンサーとさせて頂きます。

また、他の方々におかれましても、ご回答・アドバイス本当にありがとうございました。

補足日時:2012/10/13 10:49
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
当方の環境は、WindowsXP+EXCEL2010環境になります。

Shift キーを押しながらダブルクリックや
右クリックメニューの開く・編集・読み取り専用で開くを
試してみましたが、マクロ無効状態になりませんでした。

色々と試していた所、別途EXCELを起動しておいて
メニューよりファイルを開く際に、Shift+開く では
マクロが実行されずに開く事が出来ました。


直接、該当のファイルを開く場合は、Shift+ダブルクリック(開く)等では
Workbook_Open が実行されてしまいます。
EXCELの設定の問題でしょうか?

なお、マクロセキュリティは「すべてのマクロを有効」の設定環境となります。

お礼日時:2012/10/12 16:06

確認しました。



エクスプローラからでは、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
    • good
    • 1
この回答へのお礼

ご回答、アドバイスありがとうございます。
実際のマクロの内容は INIファイルの参照も含めて
様々な事をしており、普段はサーバーのタスクスケジュールで
設定して幾つかの処理を自動で行わせているのですが
質問として上げるのに辺り、短絡的に作った内容なのです。

他の者が今後管理する事になり、これまではINIファイルにマクロ自動起動の
フラグを持たせて管理をしていたのですが、それ以外にも2重3重の防衛手段
(フラグの書換を忘れていてもリカバー出来る様に)手順を考えていたので
そのうちの1つとして、質問させて頂きました。

あと、提示頂いたサンプルですがINIファイル内容より、ファイル名を取得してきたら
Dir関数等でファイルの存在チェックを掛けると、更に良いと思います。

お礼日時:2012/10/13 10:35

#2、3、cjです。


すみません。訂正だけ。
#2
(誤)
> 以上の手順で、セーフモードでExcelとブックが開きます。
(正)
以上の手順で、デザインモードでExcelとブックが開きます。

セーフモードはCtrl+でアプリケーション開くやつでしたね。
失礼しました。
    • good
    • 2
この回答へのお礼

度々ありがとうございます。
セーフモード、デザインモードの認識が
これまで無かったので勉強になります。

わざわざ、ありがとうございます。

お礼日時:2012/10/13 10:06

落ち着いてゆっくりいきましょう。




エクスプローラーなどで、シングルクリックでファイルを選択。
その後、Shift+Enterキーで開く動作、ファイルが開ききるまでShiftは押しっぱなし。



言ってみれば、ダブルクリックと同じ動作なんですけどね。
選択して、一呼吸おいて、開いてみませんか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

記載頂いた内容は、先の回答や私なりに調べた内容から
認識しておりますので、問題ございません。


ダブルクリック以外にも、該当ファイル選択してから
(1度クリックして選択されている状態)
右クリックメニューを開き、Shiftキーを押下しつつ「開く」や
Shiftキーを押下しつつ、右クリックメニューを開き
「編集」・「読み取り専用で開く」等 ※Shift+右クリック専用メニュー
Shiftキーを押下するタイミングや、押し続けているタイミング等も
色々と試してみても、マクロ無効状態で開けないので
環境的な問題なのかもと思ってきております。

該当ファイル以外にも、類似の WorkBook_Open で処理を行う
マクロを組んだXLSMファイルを作成して試してみておりますが
同じ状態であるため、ファイルの問題では無さそうなのです。


・・・あと自分の掲載した質問への追記的なものってどうやるんだろう・・・;

お礼日時:2012/10/12 18:19

こんにちは。

#2、cjです。
解決策は見つけたということのようですので、よかったです。

でもまぁ、できれば簡単な方が良いかな?色々方法があった方がよいかな?
ということもあって、一応、もう一度レスしてみます。

私の#2、
> 一旦、ファイル(またはショートカット)をクリックしてから、
これ↑伝わっていますでしょうか?
対象ファイルのアイコンがアクティブな状態にしてから
Shift + ダブルクリック、という意味ですので、
いきなり、Shift + ダブルクリック、ではうまくいかないです。

もっとも、Vista環境は私の方、確認しようがないので、OSの問題で違っていたとしても
不思議ではありませんが。
    • good
    • 0
この回答へのお礼

度々のご回答ありがとうございます。

> 一旦、ファイル(またはショートカット)をクリックしてから、

こちらの意味は重々理解しております。

ダブルクリック以外にも、該当ファイル選択してから
(1度クリックして選択されている状態)
右クリックメニューを開き、Shiftキーを押下しつつ「開く」や
Shiftキーを押下しつつ、右クリックメニューを開き
「編集」・「読み取り専用で開く」等 ※Shift+右クリック専用メニュー
Shiftキーを押下するタイミングや、押し続けているタイミング等も
色々と試してみても、マクロ無効状態で開けないので
環境的な問題なのかもと思ってきております。

該当ファイル以外にも、類似の WorkBook_Open で処理を行う
マクロを組んだXLSMファイルを作成して試してみておりますが
同じ状態であるため、ファイルの問題では無さそうなのです。

お礼日時:2012/10/12 18:06

Shiftキーを押しながらダブルクリックで開く・・・で行けたんじゃないかと。

    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
当方の環境は、EXCEL2010環境になりますが
Shift キーを押しながらダブルクリックや
右クリックメニューの開く・編集・読み取り専用で開くを
試してみましたが、マクロ無効状態になりませんでした。

なお、Shiftキーはファイルが開かれるまで
ずっと押しっぱなしにしました。

EXCELの設定の問題でしょうか?

お礼日時:2012/10/12 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています