Di chuyển tài liệu Excel mở sang cửa sổ riêng


14

Liên quan (nhưng không giống nhau): Mở tệp Excel trong cửa sổ mới

Nếu tôi có một phiên bản Excel có nhiều tài liệu mở trong cùng một cửa sổ. Có cách nào để "xé" một trong các cửa sổ trong phiên bản Excel đang chạy hiện tại để nó ở trong một cửa sổ hoàn toàn khác không?

Những gì không phù hợp với hóa đơn:

  • Sắp xếp tất cả / xem cạnh nhau / các công cụ MDI khác; Tôi muốn một cửa sổ riêng biệt có thể được tối đa hóa riêng biệt trên một màn hình khác và được quản lý bởi hệ thống cửa sổ khác nhau, v.v.
  • Lưu / đóng nó trong trường hợp đang chạy và sau đó mở một phiên bản Excel mới và mở tệp ở đó (đây là những gì tôi hiện đang làm, nhưng đó là một nỗi đau)

chỉnh sửa : phiên bản Excel mục tiêu là 2007 và 2010, mặc dù mọi thứ sẽ làm


Không thể giúp bạn nhưng tôi đã thấy cả trong Excel: Mọi thứ trong một cửa sổ (như MDI) và mỗi trang tính một cửa sổ. Bạn đã kiểm tra các prefs? Có lẽ đó là một lựa chọn?
Aaron Digulla

1
@Aaron có thể được chấp nhận và có khả năng sẽ tốt hơn những gì tôi có bây giờ, nhưng tôi không thấy tùy chọn đó ở bất cứ đâu
Daniel DiPaolo

1
Microsoft bị nguyền rủa vì đã khóa tôi vào một cửa sổ Excel! Không phải hệ điều hành của bạn được gọi là Windows - số nhiều? Chào mừng bạn đến với Cửa sổ 7!
dunxd

@dunxd - thật buồn cười khi đọc bình luận "cũ" đó kể từ bây giờ, ở đây trong tương lai, liên tục có người dùng phàn nàn rằng Excel mở mỗi sổ làm việc trong một cửa sổ riêng biệt .
ashleedawg

Bây giờ các cửa sổ được gắn thẻ như trong Chrome có thể bị "xé toạc" hoặc kết hợp lại là tốt nhất của cả hai thế giới. UI tuyệt vời bước về phía trước.
dunxd

Câu trả lời:


4

Ý tưởng thú vị. Tôi hoàn toàn tin tưởng rằng bạn không thể làm điều này nếu không có macro tùy chỉnh. Là một ngày chủ nhật mưa ...

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

Giả sử bạn không quen thuộc với VBA, bạn cần phải:

  1. Sao chép mã ở trên
  2. Với một sổ làm việc Excel mới được mở, hãy mở trình soạn thảo VBA của Excel (Alt + F11)
  3. Nhấp chuột phải vào VBAProject (Book1) (hoặc bất cứ thứ gì nó được gọi trong menu bên trái)
  4. Chọn Chèn> Mô-đun
  5. Dán mã vào cửa sổ chính
  6. Quay lại Excel, chọn một sổ làm việc khác để kiểm tra mã (nó sẽ lưu sổ làm việc trước khi đóng)
  7. Quay trở lại trình chỉnh sửa VBA, chọn mô-đun bạn đã dán và nhấn nút phát

Tôi có 3 phiên bản Excel được cài đặt trên máy của mình và khi tôi chạy phiên bản này trong Excel 2010, nó sẽ mở một phiên bản mới của Excel 2003.

Nếu điều này phù hợp với nhu cầu của bạn, bạn có thể đóng gói nó thành một bổ trợ và có sẵn dưới dạng nút ruy băng. Hãy cho tôi biết và tôi có thể giúp đỡ nếu bạn không quen làm như vậy.

Chỉnh sửa: Nếu cách tiếp cận này hiệu quả với bạn, rõ ràng sẽ có một số mã bổ sung để thêm vào để đảm bảo phiên bản Excel mới được tối đa hóa trong một cửa sổ khác. Cho tôi biết.


Đây là hoàn hảo! (Với các trường hợp phải sử dụng Excel 2010, nghĩa là)
Tobias Kienzler

Hoặc bạn có thể chỉ cần nhấp chuột phải vào biểu tượng Excel và nhấp vào Microsoft Excel, mở ra một phiên bản mới (về cơ bản là những gì mã ở trên dường như đang làm). Những gì tôi đã làm (một cách tình cờ, không thể tìm ra cách lặp lại nó) đã mở ra một sổ làm việc Excel bên ngoài MDI của ứng dụng hiện có (cho phép tôi có sổ làm việc đó trong một cửa sổ riêng) nhưng vẫn có thể tương tác với các sổ làm việc khác (dành cho vlookups trong MDI chính của tôi (vlookups, v.v.).
William

3

Tôi không có cách "xé" một tờ thành một cửa sổ mới, nhưng nếu bạn biết ngay từ đầu rằng bạn sẽ muốn có hai cửa sổ, thì đây là cách nhanh nhất:

Mở tập tin đầu tiên của bạn như bình thường. SHIFT + BẤM nút thanh tác vụ Excel (ở cuối màn hình của bạn, giữa nút Bắt đầu và đồng hồ). Điều này sẽ buộc Excel mở một phiên bản mới dưới dạng một cửa sổ riêng biệt. Đi vào cửa sổ mới và nhấp vào Tệp -> Mở để mở tệp thứ hai. Rửa sạch và Lặp lại khi cần thiết cho nhiều cửa sổ.

Thật không may, nếu bạn muốn nhấp đúp vào tệp để mở Excel, bạn sẽ phải bỏ thói quen đó cho cửa sổ thứ hai, đây là vấn đề thường gặp của tôi. Nhưng với một số suy nghĩ về phía trước, không có cách nào dễ dàng hơn.


0

Để mở 2 trường hợp, nhấp đúp vào tệp đầu tiên bạn muốn mở. Khi đã mở, hãy bắt đầu / chương trình / msoffice / excel và chỉ cần mở một phiên bản khác từ đó. Sau đó, bạn có thể sử dụng File / open Nó hoạt động cho tôi. Nếu nó không nhìn vào Tùy chọn thư mục> Loại tệp, XLS, Nâng cao & kiểm tra biểu mẫu Mở.


Tôi đặc biệt đề cập rằng tôi đã làm điều này.
Daniel DiPaolo

Ok xin lỗi tôi đã nhận được các cửa sổ và trường hợp của tôi trộn lẫn. Và tôi cho rằng bạn đã thử tối đa hóa excel trên cả hai màn hình rồi xem -> cửa sổ mới cho phép bạn quản lý cửa sổ đó một cách riêng biệt?
Dave

Xem> Cửa sổ mới chỉ tạo một cửa sổ mới trong cùng thể hiện đó, không phải cửa sổ không MDI mới.
Daniel DiPaolo

0

Câu trả lời ở trên có thể sẽ làm việc với một sổ làm việc khác với sổ làm việc đang hoạt động , đó là những gì tôi cần làm. Đây là những gì tôi đã sử dụng


Đảm bảo khi khởi động rằng sổ làm việc là một mình trong ví dụ:

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

Mã này đi trong các ThisWorkbookmô-đun , để khi bảng tính được mở nó ngay lập tức kiểm tra để xem nếu nó là chỉ Workbook mở trong trường hợp này, và nếu không muốn nói:

  1. Lưu sổ làm việc hiện tại
  2. Đặt wb hiện tại ở chế độ chỉ đọc (để ngăn bản sao thứ 2 trở thành sự cố)
  3. Dấu nhắc lệnh Shell để mở Excel trong một phiên bản mới (sử dụng chuyển đổi/x dòng lệnh của Excel ), tải một phiên bản khác của sổ làm việc hiện tại
  4. Đóng sổ làm việc hiện tại

Nếu cần, bạn có thể sử dụng một dòng lệnh tùy chỉnh khi mở phiên bản mới để chuyển hướng dẫn, v.v. sang phiên bản mới. Bạn cũng có thể xem xét sự ủng hộ và che giấu cửa sổ ứng dụng cho trường hợp mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.