Pindahkan dokumen Excel yang terbuka ke jendela terpisah

14

Terkait (tetapi tidak sama): Buka file Excel di jendela baru

Jika saya punya contoh Excel dengan beberapa dokumen terbuka di jendela yang sama. Apakah ada cara untuk "merobek" salah satu jendela di instance Excel yang sedang berjalan sehingga berada di jendela yang sama sekali berbeda?

Apa yang tidak sesuai dengan tagihan:

  • Atur semua / lihat berdampingan / hal-hal MDI lainnya; Saya ingin jendela terpisah yang dapat dimaksimalkan secara terpisah pada monitor lain dan dikelola oleh sistem jendela secara berbeda, dll.
  • Menyimpan / menutupnya dalam instance yang sedang berjalan dan kemudian membuka instance baru Excel dan membuka file di sana (inilah yang saat ini saya lakukan, tetapi ini menyebalkan)

sunting : target versi Excel adalah 2007 dan 2010, meskipun apa pun akan dilakukan

Daniel DiPaolo
sumber
Tidak dapat membantu Anda tetapi saya telah melihat keduanya di Excel: Semuanya dalam satu jendela (seperti MDI) dan setiap lembar satu jendela. Apakah Anda memeriksa prefs? Mungkin itu pilihan?
Aaron Digulla
1
@ Harun yang mungkin dapat diterima dan berpotensi berpotensi lebih baik dari yang saya miliki sekarang, tapi saya tidak melihat opsi itu di mana pun
Daniel DiPaolo
1
Microsoft terkutuk karena mengunci saya ke dalam satu jendela Excel! Bukankah OS Anda disebut Windows - jamak? Selamat datang di Jendela 7!
dunxd
@dunxd - lucu membaca komentar "lama" sekarang karena, di sini di masa depan, selalu ada pengguna yang mengeluh bahwa Excel membuka setiap buku kerja di jendela terpisah .
ashleedawg
Sekarang jendela tab seperti di Chrome yang dapat "robek" atau digabungkan kembali adalah yang terbaik dari kedua dunia. UI yang bagus melangkah maju.
dunxd

Jawaban:

4

Ide yang menarik. Saya cukup yakin bahwa Anda tidak dapat melakukan ini tanpa makro kustom. Menjadi hari Minggu hujan ...

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

Dengan asumsi Anda tidak terbiasa dengan VBA, Anda harus:

  1. Salin kode di atas
  2. Dengan buku kerja Excel baru dibuka, buka editor VBA Excel (Alt + F11)
  3. Klik kanan pada VBAProject (Book1) (atau apa pun namanya di menu kiri)
  4. Pilih Sisipkan> Modul
  5. Rekatkan kode ke jendela utama
  6. Kembali di Excel, pilih buku kerja lain untuk menguji kode (itu akan menyimpan buku kerja sebelum menutupnya)
  7. Kembali ke VBA editor, pilih modul yang Anda tempel dan tekan tombol play

Saya memiliki 3 versi Excel yang diinstal pada mesin saya, dan ketika saya menjalankan ini di Excel 2010, itu membuka contoh baru dari Excel 2003.

Jika ini sesuai dengan kebutuhan Anda, Anda bisa mengemasnya menjadi add-in dan membuatnya tersedia sebagai tombol pita. Beri tahu saya dan saya bisa membantu jika Anda tidak terbiasa melakukannya.

Sunting: Jika pendekatan ini bekerja untuk Anda, jelas akan ada beberapa kode tambahan untuk ditambahkan yang akan memastikan contoh baru Excel dimaksimalkan di jendela lain. Biarkan aku tahu.

varian
sumber
Ini sempurna! (Mengingat keadaan harus menggunakan Excel 2010, yaitu)
Tobias Kienzler
Atau Anda bisa klik kanan pada ikon Excel dan klik Microsoft Excel, yang membuka contoh baru (yang pada dasarnya apa yang dilakukan oleh kode di atas). Apa yang telah saya lakukan (secara tidak sengaja, tidak tahu bagaimana cara mengulanginya) membuka buku kerja Excel di luar MDI aplikasi yang ada (secara efektif membiarkan saya memiliki buku kerja itu di jendela terpisah) tetapi masih dapat berinteraksi dengan buku kerja lain (untuk vlookup di MDI utama saya (vlookup, dll.)
William
3

Saya tidak punya cara untuk "merobek" lembaran ke jendela baru, tetapi jika Anda tahu dari awal bahwa Anda akan menginginkan dua jendela, ini adalah cara tercepat:

Buka file pertama Anda seperti biasa. SHIFT + KLIK tombol bilah tugas Excel (di bagian bawah layar Anda, antara tombol Mulai dan jam). Ini akan memaksa Excel untuk membuka contoh baru sebagai jendela terpisah. Pergilah ke jendela baru itu dan klik File -> Open untuk membuka file kedua. Bilas dan Ulangi sesuai kebutuhan untuk beberapa jendela.

Sayangnya, jika Anda ingin mengklik dua kali pada file untuk membuka Excel, Anda harus menghentikan kebiasaan itu untuk jendela kedua, yang merupakan masalah biasa saya. Tetapi dengan pemikiran ke depan, tidak ada cara yang lebih mudah.

Brady
sumber
0

Untuk membuka 2 instance, klik dua kali file pertama yang ingin Anda buka. Setelah itu buka pergi ke start / programs / msoffice / excel dan buka saja instance lain dari sana. Maka Anda dapat menggunakan File / buka Ini berfungsi untuk saya. Jika tidak melihat Opsi Folder> Jenis file, XLS, Lanjutan & periksa formulir Buka.

Dave
sumber
Saya secara khusus menyebutkan bahwa saya sudah melakukan ini.
Daniel DiPaolo
Ok, maaf saya campur aduk windows dan instans saya. Dan saya kira Anda telah mencoba memaksimalkan excel di kedua monitor dan kemudian melihat -> jendela baru yang memungkinkan Anda untuk mengelola jendela itu secara terpisah?
Dave
Tampilan> Jendela Baru hanya membuat jendela baru dalam instance yang sama, bukan jendela non-MDI baru.
Daniel DiPaolo
0

The jawaban atas mungkin akan bekerja dengan workbook selain buku kerja yang aktif , yang adalah apa yang perlu saya lakukan. Inilah yang saya gunakan


Pastikan saat startup bahwa buku kerja itu sendiri sebagai contoh:

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

Kode ini berjalan di dalam ThisWorkbookmodul , sehingga ketika buku kerja dibuka segera memeriksa untuk melihat apakah itu satu-satunya workbook terbuka dalam hal ini, dan jika tidak:

  1. Simpan buku kerja saat ini
  2. Tetapkan wb saat ini sebagai hanya-baca (untuk mencegah salinan kedua menjadi masalah)
  3. Shell ke command prompt untuk membuka Excel dalam instance baru (menggunakan /xbaris perintah Excel saklar ), memuat instance lain dari buku kerja saat ini
  4. Tutup buku kerja saat ini

Jika perlu Anda bisa menggunakan baris perintah khusus saat membuka instance baru untuk mentransfer instruksi, dll, ke instance baru. Anda juga dapat mempertimbangkan pro dan kontra menyembunyikan jendela aplikasi untuk instance baru.

ashleedawg
sumber