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

パソコンの交換のためOSがWin2000からWinXPに変わりました。
エクセルのバージョンは変わらず2000です。

旧PCの「PERSONAL.xls」を新PCの「XLSTART」フォルダに移しました。
Sub Auto_Open() を含むモジュールがあります。
旧PCでは、Shiftキーを押しながらエクセルを起動させることで、
Sub Auto_Open() を回避してきました。
ところが新PCでは、無効にできず、処理が走ってしまいます。
セキュリティレベルが低、中、高、いずれの場合も変わりません。

ちなみにインストールしたのはパッケージ版のオフィスです。
新、旧、全く同じものでインストールしました。
原因はどこにあるのでしょうか・・・。

A 回答 (4件)

>>PERSONAL.xlsを別の場所に移動させたりしています



>以前のご回答にも書かれていましたが、常に別の場所にあるという意味合いでしょうか?
>よろしければそのメリットを教えてください。

メリットではなく、私の設定しているPERSONAL.XLSは、かなり複雑なことをしていますので、何かある時は、その置いてある場所から、PERSONAL.XLSを移動させて、退避させます。

そういう時に、
C:\Documents and Settings\[User Name]\Application Data\Microsoft\Excel\XLSTART\
     ↓
C:\Documents and Settings\[User Name]\Application Data\Microsoft\Excel\

ここに、PERSONAL.XLS のバックアップも置いています。実は、Wordほどではないにしても、PERSONAL.XLS もオプションの設定が保存されますので、Excelが健康な時に保存してあります。

それで、

Sub Auto_Open()
 MsgBox "ABC"
 Workbooks.Open Filename:="C:TEST.xls"
 MsgBox "XYZ"
End Sub

PERSONAL.XLS のAuto_Openには、まず設定しないコードだとは思いますが、そのコードを試してみました。Shift キーを押し下げた状態で、Excel 2000 でも、上位のExcelでも、読み込みません。したがって、他の原因が働いているかもしれません。

以下は、検査プログラムで、Shift を押し下げた状態では、以下も働きませんから、正常な状態では無意味なコードにはなるのですが、[Shift を押した状態/押し下げていない状態]を、検知出来ます。つまり、Excelがおかしいのか、それとも、キーボード状態がおかしいのかは区分けすることが出来ます。つまり、Excelが正常な状態なら、「SHIFT ON」が出るはずがありません。(試験済みです)どこかで、仮想キーが働いている可能性もあります。

'ThisWorkbook モジュール専用(PERSONAL.XLS内)
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_SHIFT = &H10  'Shift
Private Sub Workbook_Open()
 If GetKeyState(VK_SHIFT) < 0 Then
    MsgBox "SHIFT ON"
 Else
    MsgBox "SHIFT OFF"
 End If
End Sub

ところで、的外れの回答かもしれませんが、私自身のことで、なぜか、ここ数ヶ月でキーボードもマウスも全部壊れました。静電気のせいかもしれません。シフトキーあたりの押し下げもおかしくなってしまいました。シフトキーが、ON 状態のままで、まったくPCは扱えなくなりました。

この回答への補足

Auto_Openには、アクティブになっているブックの名称を取得して、
それによって処理を進めるか否か判定させるのみにいたしました。
今までは他ブックの編集の時は、質問のとおりシフトキー押し下げで起動させていましたが、
これを機にかえってそんな手間を加えなくてよくなり結果オーライにしちゃいます。

ながながとお付き合いいただきまして本当にありがとうございます。

補足日時:2011/01/23 18:28
    • good
    • 0
この回答へのお礼

再びのご回答、ありがとうございます。

>PERSONAL.XLS のAuto_Openには、まず設定しないコードだとは思いますが、

しないですか・・・。
日々複数ブックに対しての処理があるため、タスクでエクセルを起動し、Auto_Openで最初に処理するブックを開き・・・
という段取りでやっているのですが、考え方が良くないでしょうか・・。

シフトキーですが、押し下げ状態で SHIFT ON、押し下げていない状態で SHIFT OFF の表示でした。
こちらもよろしくないようですね。

お礼日時:2011/01/23 12:13

話が長引いてすみません。

書き込みするか迷いましたが、ひとつのこちらの結論をお伝えしなければならないと思いました。

念のため、ツール-オプションの全般の中の[XLSTART代替フォルダ名]は、空になっていることと、ネットドライブで立ち上げていないことが条件ですが、Safe モードで立ち上がりますか?
(代替フォルダに別なExcelファイルがあったり、ネットドライブも、Shiftキーが利かなくなる可能性があります。)

[スタート] より [ファイル名を指定して実行]
[名前] テキスト ボックスに、Excelがひとつしかないなら、
Excel.exe /s

複数ある場合は、
"C:\Program Files\Microsoft Office\Office\Excel.exe" /s
(C:\PROGRA~1\MICROS~2\Office\Excel.exe /s)

>シフトキーですが、押し下げ状態で SHIFT ON、押し下げていない状態で SHIFT OFF の表示でした。

キーボードは壊れていない、Excelだけの問題のようで、Shiftキーが認識てしていないということになりますが、これは、重大な問題が発生していると考えたほうがよいです。あるブログ(英語)でも、このことに触れていたものがありましたが、この現象は、あってはならないことで、現在の状態では、セキュリティの穴になっているということです。

こちらでも、起動時に、どこで、Excel.exe がどう対応しているか探してみましたが、膨大なイベント・ログの中で、短い時間では、らしきものが見いだせません。もちろん、Internet検索では、ウィルスの製造と同じ技術なので、一般には公開されていないようです。たぶん、Microsoft側は、レジストリのチェックの方法は知っているはずです。

そして、これは、ウィルスを疑ってしまいました。

まず、
C:\Program Files\Microsoft Office\Office\XLStart\
と書きましたが、この周辺で、同じようなフォルダはありませんでしょうか。
また、PERSONAL.* のファイルを、マイコンピュータで、全体を検索してみてください。
ふたつあってはなりません。これは、手動でExcelのマクロ・ウィルスを調べる方法です。

悪いほうのことを考えて、何でもなかったらよいのですが、もし、万が一にも問題があれば、大事にならずに済むかと思いました。他は大した問題ではないと思います。
    • good
    • 0
この回答へのお礼

重ねてのご回答ありがとうございます。
すぐに気が付きませんでした。申し訳ありません。
Safeモードではたちあがりました。
また、フォルダ及びファイル名の検索も該当はありませんでした。

当該のPCはクリーンインストール後、CD-ROMからWindowsXPのSP2及びSP3をあてて、
セキュリティソフトをインストールした後、インターネットに接続しました。
たぶんウィルス関係は大丈夫ではないかと思っています。
いずれにしろ、外部からのファイルを開くときは今まで以上に注意いたします。

お礼日時:2011/02/08 11:45

>旧PCの「PERSONAL.xls」を新PCの「XLSTART」フォルダに移しました。



もしかしたら、Excelが、PERSONAL.xls の正しい認識をしていないかもしれませんね。
最初だけですが、正しい認識をしていないことがあります。

もともと、旧ファイルをそのままXLSTARTフォルダに入れるというのは、多少のリスクご存知の上でされたことですよね。

私や他の方の失敗を見聞きしてきた経験からですが、もう一度、「個人用マクロブック」として、最初から設定してみたらいかがでしょうか。

それと、特殊なオプションは入れていませんか?

PERSONAL.xlsを設定する時は、記録マクロで、個人用マクロブックを作成します。その時に、出来たものはコードは削除します。そして、前の個人用マクロブックのコードをテキストベースで貼り付けています。

それと、一度、コンパイルは掛けてみましたか?オプションの設定によって挙動が変わることがあります。

なお、余計な話になるのですが、私個人は、Shift で、Auto_Openを止めたことはありません。Safeモードで立ち上げて、Auto_Openをコメントブロック(')を入れるか、Stop メソッドを入れるか、XLSTARTから、PERSONAL.xlsを別の場所に移動させたりしています。

この回答への補足

>PERSONAL.xlsを別の場所に移動させたりしています

以前のご回答にも書かれていましたが、常に別の場所にあるという意味合いでしょうか?
よろしければそのメリットを教えてください。

補足日時:2011/01/22 13:12
    • good
    • 0
この回答へのお礼

再度のご回答ありがとうございます。
先ず旧PC内のPERSONAL.xlsをそのままコピーしました。
うまくいかないので、一度それを削除、新規に個人用マクロブックを作り、
モジュールのインポートを行いました。
またうまくいかないので、もう一度個人用マクロブックを作り、
モジュールにコピペで貼り付けました。
またまたうまくいかないので質問いたしました・・・。

いろいろやってみてわかったことがあります。

Sub Auto_Open()

 MsgBox "ABC"

 Workbooks.Open Filename:="C:TEST.xls"

 MsgBox "XYZ"

End Sub

そのまま起動させたときはもちろんXYZまで表示されるのですが、
シフトキーを押して起動させると、ABC表示→TESTを開いて終了します。
旧PCではもう試せないのですが、少なくともTESTが開く挙動ではなかったです。

お礼日時:2011/01/22 12:48

>Shiftキーを押しながらエクセルを起動させる


Win XPで、Shiftキーを押しながら試してみたけれども、Excel 2000で、PERSONAL.XLSのAuto_Openは起動していませんね。

おそらく、フォルダが違うのではないでしょうか?

PERSONAL.XLS を入れているところは、以下です。
C:\Documents and Settings\[User Name]\Application Data\Microsoft\Excel\XLSTART\

以下は何も入れてはいけません。
C:\Program Files\Microsoft Office\Office\XLStart\
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。いつも参考にさせていただいております。
もう一度確認しましたが、やはり本来の場所(Documents~の方)に入っておりました。
また何かお気づきの点がありましたらよろしくお願いします。

お礼日時:2011/01/21 15:43

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