Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
AUTO_OPEN エクセル開いても実行されない方法
投稿日時: 20/10/26 18:29:02
投稿者: ザックん

いつもお世話になっております。
 
AUTO_OPEN でエクセル開いても実行されない方法ってありますでしょうか。
 
当エクセルでは、毎日データを取り込みグラフ作成等を行ってから、
特定フォルダに保存し、タスクスケジューラで同時刻に
自動PDF作成、メール自動送信をしたいと考えています。
(ここまでは作成済です)
 
しかし、データ取り込むため、エクセルを開く度に実行されてしまい困っています。
 
※シフトキー押しながら、「開く」では、効果がないようです。

回答
投稿日時: 20/10/26 22:19:26
投稿者: よろずや

ザックん さんの引用:
※シフトキー押しながら、「開く」では、効果がないようです。

変ですねえ。
 
(Windows 10 Pro : Excel 2010)では効きますよ。

回答
投稿日時: 20/10/26 22:31:14
投稿者: 半平太

アイデアだけですが・・
 
開くだけの時は、特定のブックに「処理するな」と書いて置く。
 
AUTO_OPEN側に少し手を入れ、
開かれたら、真っ先に上述ブックを開いて「処理するな」と書いてあるかどうかチェックさせる。
 
あれば、そのブックを閉じて、Exitする。
なければ、そのブックを閉じて、今まで通りの処理に進む。
 
 

投稿日時: 20/10/27 08:08:16
投稿者: ザックん

いつもお世話になっております。
 
半平太さん、よろずやさん ありがとうございます。
 
よろずやさん
やり方が違うのでしょうか。
 
シフトキー押しながら開いているのですが、実行されてしまいます。
 
シフトキー押して、離して、「開く」とか。手順が違うんでしょうか。

回答
投稿日時: 20/10/27 09:07:21
投稿者: Suzu

当方も Shift起動でも 実行してしまっていました。
(何故かは判りません・・今から調べます ^^;)
 
そもそも、なぜ Auto_Open なのでしょう。
それが、邪魔なのであれば、起動した後に、ユーザーに実行させるようにすべきでは?
 
或いは、
 同じく、Auto_Open ではない様にし、
 更新をしたい場合には、ユーザーには別ファイルを起動させる様にし
 そのファイルの開いた時、本来のブックを開きマクロを実行させる。

回答
投稿日時: 20/10/27 09:10:54
投稿者: Suzu

Win7 Pro + Excel2013
 
 マクロの設定
   警告を表示し全てのマクロを無効にする
 
 開発者向けのマクロ設定
   VBAプロジェクト オブジェクトモデルへのアクセスを信頼する
 
です。

回答
投稿日時: 20/10/27 10:12:28
投稿者: Suzu

原因までは判りませんでしたが当方が試していたのは、
エクスプローラー上から当該ファイルを、Shift+ダブルクリック にて開く方法。
 
Excelアプリケーションが立ち上がった状態から
「ファイル」-「開く」にて Shift+ ファイル を選択し 開いた場合には、マクロは実行されませんでした。
 
なぜそうなっているのか 調べる と言いましたが、
不慣れな機器にてマクロファイルを開く場合に設定をいちいち確認するより、
「ファイル」-「開く」の Shift + ファイル の習慣をつけた方が有効と思いますので
原因までは追究しません。
 
今回の、質問者さんの目的に対する対処は先に述べた通りです。

投稿日時: 20/10/29 18:45:41
投稿者: ザックん

お世話になっております。
 
今回、マクロを実行させるエクセルを用意して試していますがうまくいきません。
ご協力をお願いできますでしょうか。
 
@タスクスケジューラにて起動用エクセルは定時に開くのですが
そのあと実行されません。
Aテスト(手動ボタン▶)では全て実行されます。
 
実行させたいエクセルは"本社v12r11.xlsm"
マクロは"**グラフと**差異"
 
下記は起動用エクセルの内容
 
Public Sub workbook_open()
 
    Dim bkPath As String
    bkPath = "C:\*****\本社v12r11.xlsm"
     
    Dim wb As Workbook
    Set wb = Workbooks.Open(bkPath)
     
    Dim macroName As String
    macroName = "**グラフと**差異"
     
    Call Application.Run("'" & bkPath & "'!" & macroName)
     
    wb.Close
     
 End Sub
 
 
 

回答
投稿日時: 20/10/29 21:36:35
投稿者: simple

Public Sub workbook_open() これはどこに書いてありますか?
Thisworkbookモジュールですか?
コンボボックスをクリックして普通に作ると、
Private Sub Workbook_Open()
となるはずですが。
コード自体は特に問題はなさそうな感じです。
 
それと、これも念のため。マクロ名に*** とありますが、これは投稿上だけですね?
 
# テーマが変わってきていますが、気のせいですか?

回答
投稿日時: 20/10/29 23:32:52
投稿者: WinArrow
投稿者のウェブサイトに移動

>Call Application.Run("'" & bkPath & "'!" & macroName)
 
このコードを実行したとき、どのようになりますか?
 
↓で試してみてください。
 
Appliation.Run wb.Name & "!" & macroName
 

投稿日時: 20/10/30 12:43:12
投稿者: ザックん

お世話になっております。
 
simple様
Thisworkbookモジュールではありませんでした。
sheet1で作成していました。コピーしてThisworkbookモジュールに
貼り付けたら正常に実行されました。ありがとうございます。
 
WinArrow様
いつもありがとうございます。初歩的なこと過ぎて申し訳御座いません。
真っ新な所から作りこむことが初めてでした。
今後もご教授ください。