Попытка перебрать Workbooks.Name - PullRequest
0 голосов
/ 08 февраля 2019

Я пытаюсь перебрать имена рабочих книг, которые открываются автоматически, чтобы закрыть их, не сохраняя их.Вот как это работает без цикла:

On Error Resume Next
ActiveWorkbook.Sheets.Copy
ActiveWorkbook.SaveAs Filename:=Path & Range("C2").Value & "_Plan.xlsx", FileFormat:=51


If Err.Number = 1004 Then
    MsgBox "Speichervorgang wurde beendet."
    Workbooks("Mappe1").Close SaveChanges:=False
    Workbooks("Mappe2").Close SaveChanges:=False
    Workbooks("Mappe3").Close SaveChanges:=False
    Workbooks("Mappe4").Close SaveChanges:=False
    Workbooks("Mappe5").Close SaveChanges:=False
    Workbooks("Mappe6").Close SaveChanges:=False
    Workbooks("Mappe7").Close SaveChanges:=False
    ...
Else
...
End If

Что я пробовал:

Dim counter As Integer
Dim Mappenname As String

On Error Resume Next
ActiveWorkbook.Sheets.Copy
ActiveWorkbook.SaveAs Filename:=Path & Range("C2").Value & "_Plan.xlsx", FileFormat:=51


If Err.Number = 1004 Then
    MsgBox "Speichervorgang wurde beendet."

    counter = 0
    Do While counter = 100
        Mappenname = "Mappe" & counter
        If Workbooks(Mappenname).Open = True Then
            ActiveWorkbook.Close SaveChanges:=False
            Exit Do
        End If
        counter = counter + 1
    Loop
Else
...
End If

С моим циклом ничего не происходит ...

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Это код, который работает для меня:

On Error GoTo Warnung
    ActiveWorkbook.Sheets.Copy
    ActiveWorkbook.SaveAs Filename:=Speicherpfad & Range(ZelleSpeichername).Value & "_Netzentwicklungsplan.xlsx", FileFormat:=51
...
Warnung:
counter = 0
    Do Until counter = 10000
        Mappenname = "Mappe" & counter
        If ActiveWorkbook.Name = Mappenname Then
            ActiveWorkbook.Close SaveChanges:=False
            MsgBox "Speichervorgang wurde beendet."
            Exit Do
        End If
        counter = counter + 1
    Loop
End Sub
0 голосов
/ 08 февраля 2019

Попробуйте что-нибудь маленькое, как этот, и попытайтесь заставить его работать:

Sub TestMe()
    MsgBox Workbooks(1).Open = True
End Sub

Приведенный выше код пытается имитировать это условие - If Workbooks(Mappenname).Open = True Then.Как вы увидите, это довольно сложная задача, поскольку рабочие книги не имеют логического свойства .Open.К сожалению, код и обработчик ошибок не могут этого сказать из-за использования On Error Resume Next.

К счастью, многие задают себе вопрос - как посмотреть, открыта ли рабочая книга - Определить, открыта ли книга Excel уже

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