У меня есть небольшая проблема с Excel. Каждый раз, когда я открываю лист, я получаю эту ошибку:

примерно через 10-15 минут. Я попробовал несколько вещей, перечисленных в интернете, вот список того, что я пробовал: добавление дополнительной памяти, изменяющейся с 32-битной на 64-битную и обратно, добавление виртуальной памяти, отключение и включение DDE, изменение версий офиса, а также несколько настроек реестра , Теперь мне было интересно, если это может быть макрос, который я использую, который переключается между 2 листами с интервалом. Сначала я подумал, что это проблема, если я вытащил их из общего ресурса, поэтому я написал скрипт, который копирует их локально, но ошибка все равно возникает.

Обработчик ошибок

Dim RunTime1 As Date

Sub MacroSwitch()

     Application.DisplayFullScreen = True

     On Error GoTo Errhandler

     Application.ScreenUpdating = False

     Workbooks.Open Filename:= _
        ThisWorkbook.Path & "\Monteursplanning.extern.xls", ReadOnly:=True
     ActiveWindow.WindowState = xlMaximized

     Exit Sub

Errhandler:
     MsgBox "An error has occurred. The macro will end."

     Application.DisplayFullScreen = False
End Sub

StartSwitchbutton

Sub MacroAutoRun1() 

     Application.DisplayFullScreen = True



RunTime1 = Now + TimeValue("00:01:00")


    Application.OnTime RunTime1, "MacroAutoRun1"


    If IsWbOpen("Monteursplanning.extern.xls") Then

         Application.ScreenUpdating = False

         Workbooks.Open Filename:= _
            ThisWorkbook.Path & "\Monteursplanning.intern.xls", ReadOnly:=True
         ActiveWindow.WindowState = xlMaximized

         Windows("Monteursplanning.extern.xls").Activate
         ActiveWindow.Close

         Application.ScreenUpdating = True

    Else

         Application.ScreenUpdating = False



         Workbooks.Open Filename:= _
            ThisWorkbook.Path & "\Monteursplanning.extern.xls", ReadOnly:=True
         ActiveWindow.WindowState = xlMaximized

         Windows("Monteursplanning.intern.xls").Activate
         ActiveWindow.Close

         Application.ScreenUpdating = True

    End If
  End Sub

Какие-нибудь мысли?

1 ответ1

0

Вы можете использовать сценарий AutoIt, который периодически открывает книгу, или вы можете сделать это с источником данных в вашем файле "Display" и некоторым кодом для переключения между листами этого файла.

  • Установите соединение для файла Excel, используя Данные => Существующее соединение / Соединения => Другие элементы (внизу) и выбрав файл Monteurplannung.intern.xls, добавив Данные на свой первый лист. Обязательно проверьте свойства, чтобы настроить автоматическое обновление, и отредактируйте определение для замены Mode=Share Deny Write на Mode=Read чтобы убедиться, что файлы открыты только для чтения.
  • Установите второе соединение для другого файла и отобразите эти данные на втором листе. Параметры позволяют указать интервал обновления.

Все основано на информации в этой теме справки.

После этого вам нужно будет установить другой макрос для переключения между этими листами. Вы можете переработать часть вашего кода для этого.

Sub MacroAutoRun1()
    RunTime1 = Now + TimeValue("00:00:01")

    Application.OnTime RunTime1, "MacroAutoRun1"

    If ActiveSheet.Name = "Tabelle1" Then
        ThisWorkbook.Sheets("Tabelle2").Activate
    Else
        ThisWorkbook.Sheets("Tabelle1").Activate
    End If
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .