Мой код ниже сканирует предоставленный файл документации (параметр sp) и копирует таблицы на лист с именем «xxxx» (указанный в глобальной переменной «shtTableName»).
Этот код отлично работает, когда компьютер НЕ заблокирован. Но этот код не запускается, когда экран / компьютер заблокирован.
Я проследил, что проблема .. это с линии
sht.Paste Range("A1")
я пытался
Acitvesheet.Paste
но выдает ту же ошибку.
Я перепробовал все возможные вещи в Excel vba, но ни одна из них не работала,
Кроме того, когда выдается ошибка, она не перехватывается в разделе ErrWord, она сразу же выдает ошибку в родительский обработчик ошибок вызывающей процедуры ....
Не могу понять, почему блокировка экрана / компьютера может создать такую проблему.
Любая помощь будет принята с благодарностью.
Я использую Windows 10 версии 1808, сборка 10730.20348
Спасибо
Gaurav
Sub read_word_document(filename As String)
Dim DOC_PATH As String
DOC_PATH = filename
Dim sht As Worksheet
Dim WordDoc As Word.Document
Dim WordApp As Word.Application
Dim i As Long, r As Long, c As Long
Dim rng As Range, t As Word.Table
Dim oData As New DataObject 'object to use the clipboard
Dim bWordDocObjectCreated As Boolean
On Error GoTo ErrWord
bWordDocObjectCreated = False
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(DOC_PATH, ReadOnly:=True)
bWordDocObjectCreated = True 'indicates that object WordDoc has been created and file has been opened
Set sht = Sheets(shtTableName)
Set rng = sht.Range("A1")
For Each t In WordDoc.Tables
sht.Cells.Delete Shift:=-4162
sht.Activate
sht.Range("A1").Select
t.Range.Copy
sht.Paste Range("A1")
'ActiveSheet.Paste
Exit For 'get only first table
Next t
Application.CutCopyMode = False
oData.SetText Text:=Empty 'Clear
oData.PutInClipboard 'take it to the clipboard to empty it
Application.DisplayAlerts = False
WordDoc.Close False
WordApp.Quit
Exit Sub
ErrWord:
If Not UCase(Err.Description) Like "*CORRUPTED*" And bWordDocObjectCreated = True Then
Data.SetText Text:=Empty 'Clear
oData.PutInClipboard 'take in the clipboard to empty it
Application.CutCopyMode = False
Application.DisplayAlerts = False
WordDoc.Close False
End If
WordApp.Quit
End Sub