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


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

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

что значит не подходите:

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

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

15
задан Community
26.12.2022 23:37 Количество просмотров материала 2471
Распечатать страницу

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.

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

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

4
отвечен variant 2022-12-28 07:25

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

откройте первый файл как обычно. SHIFT + нажмите кнопку панели задач Excel (в нижней части экрана, между кнопкой Пуск и часами). Это заставит Excel открыть новый экземпляр в отдельном окне. Перейдите в это новое окно и нажмите Файл - > Открыть, чтобы открыть второй файл. Промыть и повторить при необходимости для нескольких окон.

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

3
отвечен Brady 2022-12-28 09:42

открыть 2 экземпляра дважды щелкните первый файл, который вы хотите открыть. Как только это будет открыто, перейдите в Пуск/Программы / msoffice / excel и просто откройте другой экземпляр оттуда. Затем вы можете использовать File / open Это работает на меня. Если он не смотрит на Параметры папки>типы файлов, XLS, Advanced и проверьте открытую форму.

0
отвечен Dave 2022-12-28 11:59

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


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

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

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

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

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

0
отвечен ashleedawg 2022-12-28 14:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх