[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドキュメントの回復を無視したい』(ブルーハム)
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.