Ағымдағы жұмыс кітабының нысанын C #

Мен Excel электрондық кестесіндегі Custom Document сипаттарын жасайтын C# -те бағдарламаны жаздым, бұл үшін жұмыс кітабы нысанында жұмыс істейтін функция бар ...

Дегенмен, нақты жұмыс кітапшасының нысанын алу шынымен өте тітіркендіретінді дәлелдейді, мен ExcelDNA функциясын функционалдылықты қосу үшін пайдаланамын, дегенмен, менің жұмысымның жұмыс кітабының дұрыс жұмыс кітабын қолдануға болмайды.

6

4 жауаптар

Егер сіз activeworkbook-ін C# -бен табатын болсаңыз, Office Interop-ты пайдалансаңыз, келесі кодты қолдануға болады:

(Workbook)Globals.ThisAddIn.Application.ActiveWorkbook;

[ Қайнар көз ]

15
қосылды
көзі енді қол жетімді емес. Мен бұл жұмысқа жете алмаймын. Бұл үшін біреу жақсы дереккөз жібере ала ма? Marshal ретінде маған өте қызықты, сондай-ақ мен үшін Excel жаңа данасын жасайды.
қосылды автор Ja Austin, көзі
Бұл әрдайым жұмыс істейді, Marshal.GetActiveObject («Excel.Application»);
қосылды автор Joan-Diego Rodriguez, көзі
@AdamNumberFive, иә ол жасайды. Сіз бірдей нәрсені excel COM нысанымен бірге жасай аласыз, бірақ ActiveWorkbook сипатына ие болған және excel қосымшасының данасын қолдана аласыз.
қосылды автор Michael Kingsmill, көзі

Міне, мен оны қазір істеп жатырмын, бұл шынымен жақсы жұмыс істейтін сияқты

 using Excel = Microsoft.Office.Interop.Excel;      

Содан кейін белсенді жұмыс кітабын аласыз

        //Gets Excel and gets Activeworkbook and worksheet
        Excel.Application oXL;
        Excel.Workbook oWB;
        Excel.Worksheet oSheet;
        oXL = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
        oXL.Visible = true;
        oWB = (Excel.Workbook)oXL.ActiveWorkbook; 

        docProps = oWB.CustomDocumentProperties

Сонда сізде бар нәрсені көріп, оны қалай жұмыс істейтінін көргім келеді

Бұл көмектеседі деп үміттенемін

14
қосылды
Excel-ДНҚ-нан ExcelDnaUtil.Application бағдарламасына қоңырау шалсаңыз, Marshal.GetActiveObject қайтып оралатын соңғы белсендірілген Excel данасы емес, сіз іске қосылатын Excel процесі үшін Application нысанына ие болуыңыз керек.
қосылды автор Govert, көзі
Ия, егер сізде сұрақтар туындаса, мен білемін, егер проблема болмаса, мен excel-де өте аз жұмыс істедім. Сізге көмектесетініне сенімдімін !!!!
қосылды автор Russell Saari, көзі
EXCELLENT. Сен менің сэрім - менің кейіпкерім, бұл мені тітіркендіретін проблеманы шешті, менің көзімше жаңа жұп қажет болды! Өте бағаланған.
қосылды автор Adam H, көзі
@RussellSaari Жауап үшін рахмет. Егер Excel бағдарламасының екі нұсқасы ашық болса, бұл әдіс әрқашан бірінші ашылған дананы қайтарады. яғни екінші жұмыс кітабы белсенді болса да ешқашан қайтарылмайды. Файлды қандай данамен ашқанына қарамастан, ағымдағы жұмыс кітабын қалай алуға болады?
қосылды автор regmi, көзі

@Govert өзінің түсініктемесінде жоғарыда түсіндіргендей:

using Excel = Microsoft.Office.Interop.Excel;
using ExcelDna.Integration;

// Get the correct application instance
Excel.Application xlapp = (Excel.Application)ExcelDnaUtil.Application;

// Get active workbook
Excel.Workbook wbook = xlapp.ActiveWorkbook;
7
қосылды
Мен xlapp үшін NullReference аламын. Әр нәрсе өзгерді ме? Бұл әлі де жұмыс істеуі керек пе?
қосылды автор regmi, көзі

GetActiveObject() Running Object Table (ROT) кестесінде көрінеді және жоғарғы Z тапсырысының excel терезесімен сәйкес келмейтін соңғы Excel данасын береді.

Z-тізбегі арқылы айналдырып, сәйкес жұмыс кітабын табыңыз.

See this link: - https://social.msdn.microsoft.com/Forums/office/en-US/060000d8-a899-49bf-a965-0576dee958d4/how-to-get-active-application?forum=exceldev

1
қосылды