ย้ายเอกสาร Excel ที่เปิดอยู่เพื่อแยกหน้าต่าง


14

ที่เกี่ยวข้อง (แต่ไม่เหมือนกัน): เปิดไฟล์ Excel ในหน้าต่างใหม่

หากฉันมีอินสแตนซ์ของ Excel พร้อมเปิดเอกสารหลายฉบับในหน้าต่างเดียวกัน มีวิธี "ฉีก" หนึ่งในหน้าต่างในอินสแตนซ์ที่กำลังทำงานอยู่ในปัจจุบันของ Excel เพื่อให้มันอยู่ในหน้าต่างที่แตกต่างอย่างสิ้นเชิง?

อะไรไม่เหมาะกับใบเสร็จ:

  • จัดเรียงทั้งหมด / ดูข้อมูลแบบเคียงข้างกัน / ข้อมูล MDI อื่น ๆ ฉันต้องการหน้าต่างแยกต่างหากซึ่งสามารถขยายให้ใหญ่สุดแยกต่างหากบนจอภาพอื่นและจัดการโดยระบบหน้าต่างแตกต่างกัน ฯลฯ
  • การบันทึก / ปิดในอินสแตนซ์ที่กำลังทำงานอยู่จากนั้นเปิดอินสแตนซ์ใหม่ของ Excel และเปิดไฟล์ที่นั่น (นี่คือสิ่งที่ฉันทำอยู่ในขณะนี้ แต่มันเจ็บปวด)

แก้ไข : เป้าหมายของ Excel เวอร์ชันคือ 2007 และ 2010 แต่จะทำอะไร


ไม่สามารถช่วยคุณได้ แต่ฉันเห็นทั้งสองอย่างใน Excel: ทุกอย่างในหน้าต่างเดียว (เช่น MDI) และแต่ละแผ่นงานหนึ่งหน้าต่าง คุณตรวจสอบการตั้งค่าหรือไม่? บางทีมันเป็นตัวเลือก?
Aaron Digulla

1
@Aaron ที่อาจเป็นที่ยอมรับและอาจจะดีกว่าที่ฉันมีอยู่ตอนนี้ แต่ฉันไม่เห็นตัวเลือกนั้นทุกที่
Daniel DiPaolo

1
Microsoft ถูกสาปเพราะล็อคฉันไว้ในหน้าต่าง Excel เดียว! ระบบปฏิบัติการของคุณเรียกว่า Windows - พหูพจน์หรือไม่ ยินดีต้อนรับสู่ Window 7!
dunxd

@dunxd - มันเป็นเรื่องตลกที่อ่านว่า "เก่า" คอมเม้นท์ตั้งแต่นี้ในอนาคตมีผู้ใช้ที่บ่นว่า Excel เปิดเวิร์กบุ๊กแต่ละอันในหน้าต่างแยกต่างหาก
ashleedawg

ตอนนี้หน้าต่างแบบแท็บเหมือนใน Chrome ที่สามารถ "ฉีกออก" หรือรวมกันใหม่เป็นสิ่งที่ดีที่สุดของทั้งสองโลก UI ที่ยอดเยี่ยมก้าวไปข้างหน้า
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 เลือกโมดูลที่คุณวางแล้วกดปุ่มเล่น

ฉันมี Excel 3 เวอร์ชันติดตั้งอยู่ในเครื่องของฉันและเมื่อฉันเรียกใช้งานใน Excel 2010 จะเปิดอินสแตนซ์ใหม่ของ Excel 2003

หากสิ่งนี้เหมาะสมกับความต้องการของคุณคุณสามารถจัดแพคเกจนี้ให้เป็น Add-in และใช้เป็นปุ่มริบบิ้นได้ แจ้งให้เราทราบและฉันสามารถช่วยได้หากคุณไม่คุ้นเคยกับการทำเช่นนั้น

แก้ไข: หากวิธีนี้ใช้ได้ผลกับคุณแน่นอนว่าจะมีโค้ดเพิ่มเติมที่จะเพิ่มเข้าไปซึ่งจะทำให้แน่ใจว่าอินสแตนซ์ใหม่ของ Excel จะขยายใหญ่สุดในหน้าต่างอื่น แจ้งให้เราทราบ


มันสมบูรณ์แบบ! (จากสถานการณ์ที่ต้องใช้ Excel 2010 นั่นก็คือ)
Tobias Kienzler

หรือคุณสามารถคลิกขวาที่ไอคอน Excel และคลิก Microsoft Excel ซึ่งจะเปิดอินสแตนซ์ใหม่ (ซึ่งเป็นสิ่งที่รหัสข้างต้นดูเหมือนว่ากำลังทำอยู่) สิ่งที่ฉันทำ (โดยบังเอิญไม่สามารถหาวิธีการทำซ้ำได้) เปิดสมุดงาน Excel นอก MDI ของแอปพลิเคชันที่มีอยู่ (ให้ฉันมีสมุดงานนั้นในหน้าต่างแยกต่างหาก) แต่ยังสามารถโต้ตอบกับสมุดงานอื่นได้ (สำหรับ vlookups ใน MDI หลักของฉัน (vlookups, ฯลฯ ).
วิลเลียม

3

ฉันไม่มีวิธีที่จะ "ฉีก" แผ่นงานลงในหน้าต่างใหม่ แต่ถ้าคุณรู้ตั้งแต่เริ่มต้นว่าคุณจะต้องการหน้าต่างสองบานนี่เป็นวิธีที่เร็วที่สุด:

เปิดไฟล์แรกของคุณตามปกติ SHIFT + คลิกปุ่มแถบงานของ Excel (ที่ด้านล่างของหน้าจอระหว่างปุ่มเริ่มและนาฬิกา) สิ่งนี้จะบังคับให้ Excel เปิดอินสแตนซ์ใหม่เป็นหน้าต่างแยกต่างหาก ไปที่หน้าต่างใหม่นั้นแล้วคลิกไฟล์ -> เปิดเพื่อเปิดไฟล์ที่สอง ล้างและทำซ้ำตามต้องการสำหรับหลาย ๆ หน้าต่าง

น่าเสียดายที่หากคุณต้องการดับเบิลคลิกที่ไฟล์เพื่อเปิด Excel คุณจะต้องเลิกนิสัยนี้สำหรับหน้าต่างที่สองซึ่งเป็นปัญหาปกติของฉัน แต่เมื่อมีการคิดล่วงหน้าก็ไม่มีวิธีที่ง่าย


0

หากต้องการเปิด 2 อินสแตนซ์ให้ดับเบิลคลิกไฟล์แรกที่คุณต้องการเปิด เมื่อเปิดแล้วให้ไปที่ start / programs / msoffice / excel และเปิดอินสแตนซ์อื่นจากที่นั่น จากนั้นคุณสามารถใช้ไฟล์ / เปิดมันใช้งานได้สำหรับฉัน ถ้ามันไม่ได้ดูที่ตัวเลือกโฟลเดอร์> ประเภทไฟล์, XLS, ขั้นสูงและตรวจสอบรูปแบบเปิด


ฉันได้กล่าวมาโดยเฉพาะว่าฉันได้ทำไปแล้ว
Daniel DiPaolo

โอเคขอโทษที่ทำให้หน้าต่างและอินสแตนซ์ของฉันสับสน และฉันคิดว่าคุณได้ลองใช้ excel ให้เกิดประโยชน์สูงสุดในทั้งสองจอภาพแล้วดู -> หน้าต่างใหม่ที่ช่วยให้คุณจัดการหน้าต่างนั้นแยกกันหรือไม่
เดฟ

มุมมอง> หน้าต่างใหม่เพียงสร้างหน้าต่างใหม่ภายในอินสแตนซ์เดียวกันไม่ใช่หน้าต่างที่ไม่ใช่ MDI ใหม่
Daniel DiPaolo

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. พร้อมท์คำสั่งของเชลล์ to command เพื่อเปิด Excel ในอินสแตนซ์ใหม่ (โดยใช้สวิตช์/xบรรทัดคำสั่งของ Excel ) โหลดอินสแตนซ์อื่นของเวิร์กบุ๊กปัจจุบัน
  4. ปิดสมุดงานปัจจุบัน

หากจำเป็นคุณสามารถใช้บรรทัดคำสั่งที่กำหนดเองเมื่อเปิดอินสแตนซ์ใหม่เพื่อถ่ายโอนคำแนะนำ ฯลฯ ไปยังอินสแตนซ์ใหม่ นอกจากนี้คุณยังสามารถพิจารณาผู้ใช้มืออาชีพและผู้ที่ซ่อนหน้าต่างแอปพลิเคชันสำหรับอินสแตนซ์ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.