После закрытия книги в другом приложении остается некий экземпляр - PullRequest
0 голосов
/ 08 марта 2020

Мне нужно скопировать данные из многих файлов Excel в другой файл. Целевой файл имеет определенное форматирование и некоторую функциональность, поэтому я должен использовать определенный файл в качестве шаблона (не .xltx) и не могу создать новый файл. Моя идея такова: из моей книги с маркером я открываю исходный файл и файл шаблона в отдельном приложении (пользователь может сравнить исходный и целевой файлы в отдельном windows), я копирую необходимые данные в файл шаблона и сохраняю шаблон файл под другим именем. Это работает довольно хорошо. Но при следующем запуске я получаю

ошибку времени выполнения 1004 «невозможно получить доступ к [имени файла шаблона]».

Очевидно, что не все было закрыто во время первого запуска. Но я понятия не имею, что это такое. В диспетчере задач отображается только мой файл Excel с макросами. Когда я выхожу из своего кода и запускаю снова, он работает как при первом запуске.

Dim FileChoice As Variant
Dim SourceFileApp As Excel.Application
Dim DestFileApp As Excel.Application
Dim DestFilePath As String
Dim SourceBook As Excel.Workbook
Dim DestBook As Excel.Workbook
Dim actFileNum As Integer
'------------------------------------------------
Sub OpenFiles()

Dim tmpArr As Variant
Dim i As Integer

On Error GoTo ErrorHandler

'open SourceFile
Set SourceFileApp = New Excel.Application
SourceFileApp.Visible = True 'False
Set SourceBook = SourceFileApp.Workbooks.Add(FileChoice(actFileNum))
'FileChoice: Collection of files form GetOpenFileName

'I couldn't find a way to retrive the FilePath with VBA
'SourceBook.Path is empty
tmpArr = Split(FileChoice(actFileNum), "\")
For i = 0 To UBound(tmpArr) - 1
    DestFilePath = DestFilePath & tmpArr(i) & "\"
Next

'open DestFile
Set DestFileApp = New Excel.Application
DestFileApp.Visible = True 'False
Set DestBook = DestFileApp.Workbooks.Add(DestFilePath & "DestinationFormatFile.xlsx")

Exit Sub
ErrorHandler:
   MsgBox "Error in Sub OpenFiles"

End Sub

'------------------------------------------------
Sub CloseFiles()

On Error GoTo ErrorHandler

'close SourceFile
SourceFileApp.Workbooks(1).Close SaveChanges:=False
SourceFileApp.Quit
Set SourceBook = Nothing
Set SourceFileApp = Nothing

'close DestFile
DestFileApp.Workbooks(1).SaveAs (DestFilePath & "DestinationFormatFile" & Str(actFileNum) & ".xlsx")
DestFileApp.Workbooks(1).Close SaveChanges:=False
DestFileApp.Quit
Set DestBook = Nothing
Set DestFileApp = Nothing

Exit Sub
ErrorHandler:
   MsgBox "Error in Sub CloseFile"

End Sub        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...