Переместить открытый документ Excel в отдельное окно

14

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

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

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

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

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

Даниэль ДиПаоло
источник
Не могу помочь, но я видел как в Excel: все в одном окне (как MDI) и каждый лист одно окно. Вы проверили префы? Может быть, это вариант?
Аарон Дигулла
1
@ Аарон, который может быть приемлемым и потенциально будет лучше, чем тот, который у меня есть сейчас, но я нигде не вижу такой возможности
Даниэль ДиПаоло,
1
Будь проклята Microsoft за то, что запер меня в одном окне Excel! Разве ваша ОС не называется Windows - множественное число? Добро пожаловать в окно 7!
Данксд
@dunxd - забавно читать этот «старый» комментарий сейчас, поскольку здесь, в будущем, постоянно появляются пользователи, жалующиеся на то, что Excel открывает каждую книгу в отдельном окне.
ashleedawg
Теперь окна с вкладками, такие как в Chrome, которые можно «оторвать» или перекомбинировать - это лучшее из обоих миров. Отличный интерфейс, шаг вперед.
dunxd

Ответы:

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 в другом окне. Дай мне знать.

вариант
источник
Это потрясающе! (Учитывая обстоятельства использования Excel 2010, то есть)
Тобиас Кинцлер
Или вы можете просто щелкнуть правой кнопкой мыши значок Excel и выбрать Microsoft Excel, который открывает новый экземпляр (что, по сути, и делает приведенный выше код). То, что я сделал (случайно не могу понять, как это повторить), открывает рабочую книгу Excel за пределами MDI существующего приложения (фактически позволяет мне иметь эту книгу в отдельном окне), но все еще может взаимодействовать с другими рабочими книгами. (для просмотров в моем основном MDI (просмотр и т. д.).
Уильям
3

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

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

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

Brady
источник
0

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

Дейв
источник
Я специально упомянул, что я уже делаю это.
Даниэль ДиПаоло
Хорошо, извинения я перепутал свои окна и экземпляры. И я полагаю, что вы пытались максимизировать Excel на обоих мониторах, а затем просмотреть -> новое окно, которое позволяет вам управлять этим окном отдельно?
Дейв
Вид> Новое окно просто создает новое окно в том же экземпляре, а не новое, не MDI-окно.
Даниэль ДиПаоло
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 в новом экземпляре (с помощью переключателя/x командной строки Excel ), загружая другой экземпляр текущей рабочей книги
  4. Закрыть текущую рабочую книгу

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

ashleedawg
источник