ย้ายเอกสาร 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.