2016-09-20 5 views
1

Im Beispiel Sample15.cs heruntergeladen von EPPlus, sehe ich, dass EPPlus VBA-Makros schreiben/injizieren kann. Ich sehe jedoch nicht, wie alle VBA-Makros aus einer .xlsm-Arbeitsmappe gelesen werden.Erhalten Sie alle VBA-Makros einer Arbeitsmappe von EPPlus

Kann EPPlus VbaProject.bin interpretieren und diese Funktionalität unterstützen?

PS: es scheint, dass Open XML SDK dies nicht tun können, entweder (bitte korrigieren Sie mich, wenn ich falsch bin), das ist, warum ich EPPlus bin am überlegen ...

Antwort

0

Wenn Sie nur den Code in jeder Module, die Sie gerade lesen möchten gehen, um durch die Sammlung ‚Workbook.VbaProject.Modules‘ wie folgt aus:

var fi = new FileInfo(@"C:\temp\Book1.xlsm"); 
using (var pck = new ExcelPackage(fi)) 
{ 
    var modules = pck.Workbook.VbaProject.Modules; 
    foreach (var module in modules) 
    { 
     Console.WriteLine($"Module Name: {module.Name}{Environment.NewLine}Code:"); 
     Console.Write(module.Code); 
     Console.WriteLine("---------"); 
    } 

Welche Sie dies in der Ausgabe geben (ich habe gerade eine Excel-xlsm mit zwei Modulen):

Module Name: ThisWorkbook 
Code: 
--------- 
Module Name: Sheet1 
Code: 
--------- 
Module Name: Module1 
Code: 
Public Sub proc1() 
    Dim wb As Workbook 
    Set wb = ActiveWorkbook 

    Dim ws As Worksheet 
    Set ws = wb.ActiveSheet 

    ws.Cells(1, 1).Value = "proc1" 

End Sub 

--------- 
Module Name: Module2 
Code: 
Public Sub proc2() 
    Dim wb As Workbook 
    Set wb = ActiveWorkbook 

    Dim ws As Worksheet 
    Set ws = wb.ActiveSheet 

    ws.Cells(2, 1).Value = "proc2" 

End Sub 

--------- 
+0

Das ist genau das, was ich will ... Außerdem untersuche ich den Quellcode von EEPlus, um zu sehen, wie es das erreicht ... Warum sehe ich nicht die Interpretation von [vbaProject.bin] (http://download.microsoft.com) .com/download/2/4/8/24862317-78f0-4c4b-b355-c7b2c1d997db /% 5BMS-OVBA% 5D.pdf) in * VBA/*. cs'? – SoftTimur

+0

@SoftTimur Ich denke, die Manipulation der VBA bin wäre ein ganzes Projekt für sich, da es eine binäre Datei ist. Da VBA eine Art Subset/Ableger des Excel-DOM ist, würde es wirklich eine ungeteilte Aufmerksamkeit für Projekte benötigen, um es gerecht zu werden. Wenn Sie das noch nicht gesehen haben, lesen Sie hier: http://www.codeproject.com/Articles/15216/Office-bin-file-format – Ernie

+0

Aber Ihr Beispiel zeigt, dass EEPlus diese Binärdatei liest, richtig? obwohl ich nicht sehe, welcher Teil seines Codes dies erreicht ... – SoftTimur

Verwandte Themen