2017-09-24 3 views
2

私は現在、ウェブから毎日データをインポートするために使用するマクロを開発しています。このマクロは、Excelファイルを開いたときにアクティブになります。データはある特定の時刻の後にのみ関連し、タスクスケジューラを使用してこの時間後にファイルを自動的に開きます。キャンセルするオプション付きの自動auto_openマクロ

唯一の問題は、手動でファイルを開いたときにマクロを実行したくないということです。そのため、遅延タイマーをマクロに追加して、停止機能を追加することが可能かどうか疑問に思っていますマクロはこの期間中に実行されません。または、この問題に対する他の可能な解決方法があるかどうか。

乾杯すべて

+0

無効マクロオプションでそれを開いてみてください。 –

+0

私はあなたがExcel内から開く時にシフトを押し続けることについて話していると思いますか?私はこれまでこれを使用する必要がなかったので、これを見なければならなかった。それが唯一の方法ですか?必然的に、私はこれをやってデータの混乱を忘れる日があります。 – andimac

+1

データインポートスクリプトをworksheet_openに配置する必要はありません.VBSオートメーションを使用してマクロとそのマクロを実行し、代わりに** get_data.VBS **ファイルスクリプトを実行するようにタスクマネージャをスケジュールできます。 –

答えて

3

ブックを開くときにmsgboxを使用できます。

  • [キャンセル]をクリックすると、コードは実行されません。
  • OKをクリックすると、 が実行されます。
  • 5秒間(タスクスケジューラ)何もしないと、コードは が実行されます。

Private Sub Workbook_Open() 
Dim msg As String, runcode As Long 

msg = "Click cancel to abort or the code will execute in 5 seconds!" 
runcode = CreateObject("Wscript.Shell").Popup(msg, 5, "What to do:", vbOKCancel) 

If runcode = 2 Then End 

'call import data macro 
End Sub 
+0

これは私が探していたものとほぼ同じです!ありがとう – andimac

+0

優秀!!!!!! –

+0

これを復活させて申し訳ありませんが、これは昨日働いていましたが、もはやコードに重大な変更を加えていないようです。メッセージボックスは引き続き表示されますが、10秒後には消えません。誰でもここで何が起こっているかも考えている? – andimac

関連する問題