[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドキュメントの回復を無視したい』(ブルーハム)
Excelをタスクスケジューラで5分おきに起動からシャットダウンまでを実行しています。
Excel起動時にはvbaで自動で実行されるコードがあります。
ここから聞きたいことなんですが、エクセルを起動してvba実行中に途中でエラーで止まり、
そこにタスクスケジューラでの強制終了を実行すると、次回エクセルを開いた時にドキュメントの回復というのが出てきます。
vba自体は実行されるのですがシートが何もないドキュメントの回復のみ表示されたExcelが開きっぱなしになり、その後タスクスケジューラも機能しなくなりました。
Excelのオプションから自動回復のチェックなどは外しているのですが状況は変わりません。
私としてはドキュメントの回復自体を表示しないようにできないものかと考えています。
なにか方法はありますか?
< 使用 Excel:Excel2010、使用 OS:Windows10 >
>Excelのオプションから自動回復のチェックなどは外しているのですが
これは、
「このブックの自動回復を行わない。」にチェックが入っているということですか?
それともチェックしていない?
また、
>タスクスケジューラでの強制終了を実行すると
とは、事前にエラーになるタイミングが分かっているということなんですか?追加説明ください。
(xyz) 2023/04/19(水) 19:57:50
1点目の質問について
チェックは入っています。
2点目の質問について
かれこれ1ヶ月間今回の作業を行なっていますが、2日くらい回したところでエラーが出ています。
vbaのコードが長くてここには書けませんが2023年4月18日の質問の「実行時エラー 1004 rangeクラスのcopypictureメソッドが失敗しました。と一定確率で出るのを何とかしたい」ってやつです。
もうエラーが出るのは仕方ないと思い、途中で止まった場合強制終了してしまうようにExcelを強制終了するタスクを組みました。
説明下手ですいません。
(ブルーハム) 2023/04/19(水) 20:20:01
[[20230418162302]]
の継続案件なんですね。
解答者は全てのスレを見ているわけではないので、
きちんと関連情報は書いてくださいね。
自分にとっては当たり前でも。
(xyz) 2023/04/19(水) 20:35:33
う〜ん、エラーが出ないのが最善なのですが 試して無いけど…応急処置になるかどうか?
VBAには、この「このブックの自動回復を行わない」の設定をコードで行う事が出来ます。 http://blog.livedoor.jp/katsuyausami/archives/52107517.html
(あみな) 2023/04/19(水) 20:48:35
申し訳ございません。
以後気をつけます。
(ブルーハム) 2023/04/19(水) 20:50:15
回答ありがとうございます。
ご提案の方法それぞれ試してみます。
(ブルーハム) 2023/04/19(水) 21:48:47
昔取った杵柄でPowerShell経由で・・・
[[20230315152401]] 『シート内の画像を個別に保存 指定列のセルから名』(フリスク)
Option Explicit Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub Workbook_Open() Dim wb As Workbook: Set wb = ThisWorkbook Dim ws As Worksheet Dim msg As String Dim f As Integer Const path As String = "C:\???\???\???\???\???\???\" Application.DisplayAlerts = False Application.ScreenUpdating = False
For Each ws In Worksheets flgNum = 0 Select Case ws.Name Case "報告書" Call 画像保存(ws.Range("D4:N52"), path & "image" & "1.png", msg) Case "グラフ" '範囲1 Call 画像保存(ws.Range("A1:Y35"), path & "image" & "2.png", msg)
'範囲2 Call 画像保存(ws.Range("A36:Y70"), path & "image" & "3.png", msg) Case Else '何もしない End Select Next ws msg = Mid(msg, 2) f = FreeFile Open ThisWorkbook.path & "\出力ログ.log" For Append As #f Print #f, msg Close #f ThisWorkbook.Save Application.DisplayAlerts = True Application.ScreenUpdating = True Application.Quit End Sub Private Function 画像保存(rng As Range, filepath As String, ByRef msg As String) Dim cmd As String Dim filesize As Long Dim tmp As Long tmp = 0 filesize = FileLen(filepath) '<--これって何の意味があるの? If FileLen(filepath) <= filesize Then rng.Copy DoEvents Sleep 100 cmd = cmd + "Add-Type -AssemblyName System.Windows.Forms;$ImagePath = '" & filepath & "'; [Windows.Forms.Clipboard]::GetImage().Save($ImagePath, [System.Drawing.Imaging.ImageFormat]::png)" 'WScriptから、PowerShellにコマンドを渡す。260文字以内 'Command:="powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " '↑がPowershellの定型文 'WindowStyle 1表示 0非表示 'WaitOnReturn True同期実行 False非同期実行 ※但し、Runの場合のみ。exeでは必ず同期実行になる With CreateObject("WScript.Shell") .Run Command:="powershell -NoLogo -ExecutionPolicy RemoteSigned -Command " _ & cmd _ , WindowStyle:=0 _ , WaitOnReturn:=False End With tmp = 1 Else tmp = -1 End If msg = msg & Chr(10) & Format(Now, "yyyy/mm/dd h:mm:ss") & "," & rng.Parent.Name & "," & rng.Address(0, 0) & "," & IIf(tmp = 1, "成功", "失敗") End Function (稲葉) 2023/04/20(木) 10:15:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.