Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13620 / 13644 ツリー ←次へ | 前へ→

【4527】タスクのスケジュールで開いたブックを終... motomo 03/3/25(火) 17:13 質問
【4532】とりあえず解決も・・・ motomo 03/3/25(火) 19:46 質問
【4558】Re:タスクのスケジュールで開いたブックを終... Kein 03/3/26(水) 21:02 回答
【4560】Re:Personal.xlsについて教えてください。 motomo 03/3/26(水) 22:26 質問
【4562】Re:Personal.xlsについて教えてください。 Kein 03/3/26(水) 23:34 質問
【4563】Re:Personal.xlsについて教えてください。 Kein 03/3/26(水) 23:36 回答
【4575】Re:Personal.xlsについて教えてください。 motomo 03/3/27(木) 12:46 お礼

【4527】タスクのスケジュールで開いたブックを終...
質問  motomo E-MAIL  - 03/3/25(火) 17:13 -

引用なし
パスワード
   別のブックを開いた状態で、タスクのスケジュール管理
で開いたブックをVBAから自動終了させたいのですが・・・

Sub AUTO_OPEN()

  AppActivate Application.Caption
  
  〜処理いろいろ〜

  ActiveWorkbook.Saved = True
  ThisWorkbook.Close

  Windows("別のブック.xls").Activate
  
End Sub

これでは、開いたファイルは閉じますが、Excel自体が
残ってしまい、×ボタンor"終了"しないと"別のブック"が
Activeになってくれません。
但し、"別のブック"のメニューバーからファイルを開くと
きれいさっぱり跡形もなく終了し、"別のブック"もActive
になってくれます。

良策あればご教授ください。お願いします。

【4532】とりあえず解決も・・・
質問  motomo  - 03/3/25(火) 19:46 -

引用なし
パスワード
   皆さん、大変お騒がせをして申し訳ありません。
タスクのスケジュール設定[詳細設定]で、
  繰り返し時間:1分
  継続時間:2分
  「タスクが実行中の場合、この時刻で停止する」にチェック
とすると、2分後に完全終了しました。

どうやら、タスクのスケジュール機能を使うと、ブックはVBAで
終了できる様ですが、Excel自体が"タスク実行中"として残る
様です。

なにやらすっきりしない方法で、とりあえずは無理やり終了する
みたいですが、もっとすっきりした方法をご存知の方、是非是非
お知恵を授かりたく、重ね重ねお願いいたします。

【4558】Re:タスクのスケジュールで開いたブックを...
回答  Kein  - 03/3/26(水) 21:02 -

引用なし
パスワード
   ▼motomo さん:
Sub Auto_Open()
  Workbooks.Open "別のブック.xls"
  "別のブック.xls"に対する処理
  ActiveWorkbook.Close True
  ThisWorkbook.Saved = True
  Application.Quit
End Sub

というマクロを Personal.xls に入れれば、自動化できると思います。
複数のブックを開くなら、1つずつ開く→処理→閉じる・・にした方が安全です。

【4560】Re:Personal.xlsについて教えてください。
質問  motomo  - 03/3/26(水) 22:26 -

引用なし
パスワード
   Keinさん、今晩は。
ご回答ありがとうございます。

質問に付け加えて、今回の目的を追記します。
毎日定刻に"帳票.xls"を自動起動し、ネットワーク上の別のPCから
データーを採取後、帳票を作成・印刷して自動終了をさせようと
思っています。人の介在はありません。
しかしながら、"帳票.xls"以外に、常時立ち上げている、
"常時.xls"が存在しているため、"帳票.xls"が終了後は、必ず
"常時.xls"をActiveにして終了させる必要があります。

"Personal.xls"については、raloxaに感染時見かけたことが
ありますが、本件も同様にStartupフォルダーに入れた上で、
タスクのスケジュールで"Personal.xls"を起動すればよいの
でしょうか?

"Personal.xls"と聞いただけで少々ビビッてしまうのですが、
とりあえず、この方法で実行してみようと思います。
"Personal.xls"の使い方や、保存場所等、詳しい情報について、
差し支えなければ更にご教授いただきたく、お願いいたします。
お手数をかけてすみません。

【4562】Re:Personal.xlsについて教えてください。
質問  Kein  - 03/3/26(水) 23:34 -

引用なし
パスワード
   ▼motomo さん:
>常時立ち上げている、"常時.xls"が存在
ということでしたら、それに Auto_Open マクロで、OnTimeメソッドを使った
コードを起動させれば良いと思います。例えば

Sub Auto_Open()
 Application.OnTime TimeValue("9:00:00"), "定時印刷", TimeValue("00:30:00")
End Sub
'↑9時になったら"定時印刷"を起動。猶予時間は30分

Sub 定時印刷()
  On Error GoTo ErLine
  Workbooks.Open "帳票.xls"
  Worksheets(1).Activate
  'ここにデータ採集・表作成のコードを書く
  Worksheets(1).PrintOut Copies:=3
ErLine:
  If Workbooks.Count = 2 Then
   Workbooks(2).Close True
  End If
  If Err > 0 Then
   Debug.Print "エラーが発生! 異常終了しました : " & Time
  End If
  Application.OnTime TimeValue("9:00:00"), "定時印刷", , False
  ThisWorkbook.Save
  Application.Quit
End Sub

てな感じでしょーか。
>"Personal.xls"の使い方や、保存場所等
と言っても、それほど特殊なものではありません。保存するところは
>Startupフォルダー
で良いわけです。通常のブックとの違いと言えば、非表示で最初に自動的に立ちあがる
ということぐらいです。もちろん必要なら、ワークシートなどを追加挿入することも
出来ます。「ウィンドウ」「再表示」で見ることができます。それぐらいかな・・。
>タスクのスケジュールで"Personal.xls"を起動
当初のやり方なら、そういうことになりますね。 

【4563】Re:Personal.xlsについて教えてください。
回答  Kein  - 03/3/26(水) 23:36 -

引用なし
パスワード
   "問い"ではなくて"回答"のつもりでした (^^;

【4575】Re:Personal.xlsについて教えてください。
お礼  motomo  - 03/3/27(木) 12:46 -

引用なし
パスワード
   ▼Kein さん:
こんにちは。
VBAにタイムイベントがあるなんて・・・
コントロールで探してはみたんですが見あたらず、
OnTimeメソッドの使い方も今ひとつ解らず、
仕方なくタスクのスケジュール管理を使った次第です。
常時・帳票を分ける必要も無くなりますね。
目から鱗です。助かりました。
本当に有り難うございました。(礼)

13620 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free