Как исправить то, что рабочие книги не закрываются должным образом - PullRequest
0 голосов
/ 16 мая 2019

В настоящее время я пишу макрос, который позволит вам выбрать папку, установить границы, а затем перебрать некоторые числа для чтения во всех файлах определенного типа. (Excel в этом случае.)

Вы можете увидеть это прямо здесь

Dim StringP1 As String
Dim iterator As Integer
Dim StringP2 As String
Dim i As Integer
Dim final As Integer

'number of files
final = 5


'main folder
StringP1 = " FOLDER NAME "
StringP2 = ".xls"
i = 1

While i < final

    iterator = 1
    FileName = StringP1 & iterator & StringP2

    Call attempt1(FileName)
    Call attempt2(FileName)

    i = (i + 1)
    iterator = (iterator + 1)
Wend

когда он загружается в мои сабвуферы, он использует этот код

Sub attempt1(FN As String)

Dim Excel As New Excel.Application
Dim FileName As String

Set XL = CreateObject("Excel.Application")
Set MyRec = CurrentDb.OpenRecordset("Infor")

Excel.Workbooks.Open (FN)

Затем он проходит через некоторый код и, в конце концов, выходит из подпрограммы. Все, что я пробовал, похоже, провалилось.

Я возился с этим несколько часов, используя разные вещи, которые я нашел на Stackoverflow и других сайтах VBA, но, похоже, ничего не работает.

Я пытался использовать

excel.workbooks.close savechanges:=false
workbook.close
workbooks.close
.
.
.

Мне любопытно, если кто-нибудь знает хороший способ закрыть все эти EXCEL.EXE, которые открываются?

1 Ответ

0 голосов
/ 17 мая 2019

Если я правильно понимаю, вы пытаетесь закрыть все книги (файлы Excel). Правильный способ закрыть одну книгу по названию:

    XL.Workbooks("filename.xls").Close Savechanges:=False

Если вам нужно закрыть много рабочих книг, вы можете использовать цикл, подобный следующему:

Public Sub WorkWithExcel()
    Dim XL As New Excel.Application, WB As Excel.Workbook
    ' Open Excel file:
    XL.Workbooks.Open ("my_file.xls")
    ' Open another Excel file
    XL.Workbooks.Open ("another my file.xls")
    ' do some work with this files
    ' ...
    ' For every file in our application:
    For Each WB In XL.Workbooks
        ' Close file without saving changes:
        WB.Close savechanges:=False
    Next WB
    ' Close Excel applicatioin:
    XL.Quit
    ' Clear object:
    Set XL = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...