14

Связано (но не то же самое): открыть файлы Excel в новом окне

Если у меня есть экземпляр Excel с несколькими документами, открытыми в одном окне. Есть ли способ "оторвать" одно из окон в текущем запущенном экземпляре Excel, чтобы оно находилось в совершенно другом окне?

Что не соответствует требованиям:

  • Упорядочить все / смотреть рядом / другие вещи MDI; Я хочу отдельное окно, которое можно развернуть отдельно на другом мониторе, и которое будет по-разному управляться оконной системой и т.д.
  • Сохранение / закрытие его в работающем экземпляре, а затем открытие нового экземпляра Excel и открытие файла там (это то, что я сейчас делаю, но это боль)

редактировать: целевой версией Excel является 2007 и 2010, хотя все будет делать

4 ответа4

4

Интересная идея. Я достаточно уверен, что вы не можете сделать это без специального макроса. Будучи дождливым воскресеньем ...

Sub OpenInNewInstance()
     Dim objXLNewApp As Excel.Application
     Dim doc As String

     doc = ActiveWorkbook.FullName
     ActiveWorkbook.Close True

     Set objXLNewApp = CreateObject("Excel.Application")

     objXLNewApp.Workbooks.Open doc
     objXLNewApp.Visible = True
End Sub

Предполагая, что вы не знакомы с VBA, вам необходимо:

  1. Скопируйте код выше
  2. Открыв новую книгу Excel, откройте редактор VBA для Excel (Alt+F11)
  3. Щелкните правой кнопкой мыши на VBAProject (Book1) (или как он называется в левом меню)
  4. Выберите Вставить> Модуль
  5. Вставьте код в главное окно
  6. Вернувшись в Excel, выберите другую книгу для тестирования кода (она сохранит книгу до того, как закроет ее)
  7. Вернитесь в редактор VBA, выберите вставленный модуль и нажмите кнопку воспроизведения.

У меня установлено 3 версии Excel на моем компьютере, и когда я запускаю это в Excel 2010, он открывает новый экземпляр Excel 2003.

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

Изменить: Если этот подход работает для вас, очевидно, будет добавлен некоторый дополнительный код, который обеспечит максимизацию нового экземпляра Excel в другом окне. Дай мне знать.

3

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

Откройте свой первый файл как обычно. SHIFT + ЩЕЛКНИТЕ кнопку панели задач Excel (внизу экрана, между кнопкой «Пуск» и часами). Это заставит Excel открыть новый экземпляр в виде отдельного окна. Войдите в это новое окно и нажмите File -> Open, чтобы открыть второй файл. Промойте и повторите по мере необходимости для нескольких окон.

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

0

Чтобы открыть 2 экземпляра, дважды щелкните первый файл, который вы хотите открыть. Как только это откроется, перейдите в start/ Programs / msoffice / Excel и просто откройте другой экземпляр оттуда. Тогда вы можете использовать файл / открыть, это работает для меня. Если он не видит Параметры папки> Типы файлов, XLS, Дополнительно и проверьте форму Открыть.

0

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


При запуске убедитесь, что книга одна, например:

Private Sub Workbook_Open()
    If Application.Workbooks.Count > 1 Then  'check if there's >1 open wb's in this instance
        If MsgBox("This workbook will be moved to a new instance of Excel," & vbLf & _
            "so as to not affect performance of your other workbooks.", _
            vbOKCancel + vbInformation + vbDefaultButton1 + vbMsgBoxSetForeground) _
            = vbCancel Then Exit Sub
        Debug.Print Application.Hinstance, "Moving wb to new instance."
        OpenInNewInstance
        Debug.Print Application.Hinstance, "Moved wb to new instance."
    Else
        Debug.Print "This wb is in it's own instance. (#" & Application.Hinstance & ")"
    End If
End Sub

Sub OpenInNewInstance()
    With ThisWorkbook
        .Save                                           'save workbook before making it read-only
        .ChangeFileAccess xlReadOnly                    'make this wb read-only (so the other isn't)
        Shell ("excel.exe /x """ & .FullName & """")    'open current wb in new instance
        .Close                                          'close this workbook
    End With
End Sub

Этот код входит в модуль ThisWorkbook, поэтому при открытии книги он сразу проверяет, является ли она единственной книгой, открытой в данном случае, и если нет:

  1. Сохранить текущую книгу
  2. Установить текущий wb как доступный только для чтения (чтобы предотвратить появление второй копии)
  3. Оболочка в командную строку, чтобы открыть Excel в новом экземпляре (с помощью переключателя командной строки Excel /x), загружая другой экземпляр текущей рабочей книги
  4. Закрыть текущую рабочую книгу

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

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