ฉันจะบังคับให้ Excel เปิดเอกสารด้วย Add-in เมื่อแอปพลิเคชันอื่นเปิดกระบวนการ Excel ได้อย่างไร


3

เมื่อ MATLAB R2015b โต้ตอบกับ Excel จะเปิดหนึ่งกระบวนการของ Excel และจากนั้นเปิดกระบวนการต่อไปจนกว่าจะปิด MATLAB เมื่อสิ่งนี้เกิดขึ้นถ้าฉันพยายามเปิดสเปรดชีตผ่าน File Explorer มันจะเปิดขึ้นในอินสแตนซ์ของ Excel โดยไม่ต้องโหลด Add-in นอกจากนี้ไฟล์ที่เปิดเช่นนี้จะไม่บันทึกอัตโนมัติหรือขอให้ผู้ใช้บันทึกเมื่อออก

ถ้าฉันเปิดแอปพลิเคชัน Excel ผ่านเมนูเริ่มต้น Excel เต็มจะโหลดพร้อม Add-in ทั้งหมด แม้หลังจากที่ฉันทำสิ่งนี้แล้วการเปิดไฟล์ใหม่ผ่าน File Explorer จะเปิดในเวอร์ชันที่ถูกปิดใช้งาน Add-in มีวิธีบังคับให้ Excel เปิดไฟล์ในเวอร์ชันของ Excel ที่เปิดใช้งาน Add-in หรือไม่

ฉันกำลังใช้ Office 2013, MATLAB R2015b และ Windows 7

อัปเดต: ฉันพบรายงานข้อผิดพลาดและโปรแกรมแก้ไข MATLAB เพื่อเป็นส่วนหนึ่งของปัญหานี้ มันอยู่ที่นี่: https://www.mathworks.com/support/bugreports/1325577


คุณเปิดบานหน้าต่างแสดงตัวอย่างบน File Explorer หรือไม่ บางครั้งสิ่งนี้ทำให้เกิดปัญหาเมื่อเลือกและเปิดไฟล์ Excel ที่ใช้ Add-in ถ้าเป็นเช่นนั้นลองปิดมัน อาจมีบางกระบวนการของ Excel ที่ทำงานในพื้นหลัง - ตรวจสอบกับตัวจัดการงานและฆ่าพวกเขาก่อน
David Jones - iPushPull

คุณอาจเพิ่มตัวเลือก "เปิดในหน้าต่างใหม่" ในเมนูคลิกขวาสำหรับประเภทไฟล์. xls และ. xlsx ซึ่งเรียกใช้ Excel.exe พร้อมสวิตช์ / x และไม่มี DDE ฉันใช้ Office 2010 จึงไม่สามารถโพสต์ตำแหน่งคีย์รีจิสตรีได้
w32sh

สำหรับ Excel 2010 (32 บิต) สามารถปรับเปลี่ยนได้สำหรับ 2013 pastebin.com/r3q6DR5P ดูเพิ่มเติมที่: superuser.com/questions/431061/…
w32sh

@David บานหน้าต่างแสดงตัวอย่างไม่เปิดใช้งาน น่าเสียดายที่กระบวนการพื้นหลังของ Excel เป็นส่วนหนึ่งของการเปิด MATLAB ดังนั้นจึงไม่ใช่การเริ่มต้น
จอห์น

จะเกิดอะไรขึ้นถ้ามาโครเหตุการณ์สมุดงาน _open อยู่ในสมุดงานที่เปิดอยู่ มันทำงานหรือไม่
Raystafarian

คำตอบ:


3

ขึ้นอยู่กับประเภทของ Add-in โดยทั่วไปคุณสามารถมี Add-in ของ Excel (โดยปกติจะเขียนเป็น VBA) และ COM Add-in ซึ่งสามารถเขียนเป็นภาษาใดก็ได้ที่เข้าใจ COM นอกจากนี้ยังสามารถขึ้นอยู่กับตำแหน่งที่ติดตั้ง Add-in

Excel add-in ในบางไดเรกทอรีสามารถค้นหาและเปิดโดยอัตโนมัติ สถานที่ทั่วไปในการติดตั้ง Add-in ของ Excel อยู่ที่ C: \ Users \\ AppData \ Roaming \ Addins หากเก็บ Add-in ของ Excel ไว้ที่นี่สามารถเปิดได้จากแท็บไฟล์ -> ตัวเลือก -> Addins ใน Excel หรือจากแท็บนักพัฒนาหากคุณเปิดใช้งาน หลังจากเปิดใช้งาน Add-in ไม่ว่าจะในที่ใดก็ตามโดยทั่วไปจะโหลดเมื่อใดก็ตามที่ Excel เริ่มทำงาน

มีการติดตั้ง COM addins โดยใช้โปรแกรมติดตั้งซึ่งทำการอ้างอิงไปยัง Add-in ในรีจิสทรี Excel จะค้นหาส่วนเสริมเหล่านี้ในรีจิสทรีเมื่อเปิดขึ้น ตำแหน่งที่ตั้งสองแห่งที่ฉันอธิบายไว้ข้างต้นยังมีรายการ COM เพิ่มเติมและสามารถเปิดใช้งานผ่านรายการเหล่านี้ได้

นอกจากนี้คุณสามารถบังคับให้เวิร์กบุ๊กเพื่อเปิด Add-in จาก VBA เมื่อเวิร์กบุ๊กของคุณเปิดขึ้นรูทีนที่ชื่อว่า Workbook_Open จะถูกเรียกใช้งาน รหัสบางอย่างเช่นนี้จะบังคับให้ติดตั้ง Addin

Sub Workbook_Open()
    Const addinName as String = "insert the name of your add-in"

    If Not AddinLoaded(addinName) Then
        If AddinAvailable(addinName) Then
            On Error Resume Next
                Application.AddIns2(addinName).Installed = True
            On Error GoTo 0
        End If
    End If
End Sub

Function AddinAvailable(addinName As String) As Boolean
    Dim ad As AddIn

    On Error Resume Next
        Set ad = Application.AddIns2.Item(addinName)
    On Error GoTo 0

    AddinAvailable = Not ad Is Nothing
End Function

Function AddinLoaded(addinName As String) As Boolean
    Dim ad As AddIn, errNumber As Long

    On Error Resume Next
        Set ad = Application.AddIns2.Item(addinName)
        errNumber = Err.Number
    On Error GoTo 0

    If Not ad Is Nothing Then
        If errNumber = 0 Then AddinLoaded = ad.Installed And ad.IsOpen
    End If
End Function

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