Предполагается, что вы хотите автоматизировать реальные приложения.
Добавить ссылки на:
Следующее должно избавить вас от кода макроса для Excel.Автоматизация Word и PowerPoint будет аналогичной.
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
using PPT = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Vbe.Interop;
namespace OfficeMacros
{
class Program
{
static void Main(string[] args)
{
}
static void RemoveMacrosExcel(string fileName, string newFileName)
{
var excel = new Excel.Application();
var workbook = excel.Workbooks.Open(fileName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
foreach (VBComponent component in workbook.VBProject.VBComponents)
{
switch (component.Type)
{
case (vbext_ComponentType.vbext_ct_StdModule):
case (vbext_ComponentType.vbext_ct_MSForm):
case (vbext_ComponentType.vbext_ct_ClassModule):
workbook.VBProject.VBComponents.Remove(component);
break;
default:
component.CodeModule.DeleteLines(1, component.CodeModule.CountOfLines);
break;
}
}
workbook.Close(true, newFileName, Type.Missing);
// Release variables
workbook = null;
excel = null;
// Collect garbage
GC.Collect();
}
}
}
Если вы хотите самостоятельно проанализировать структуры двоичных файлов, вам необходимо просмотреть следующие документы:
Если это кажется слишком сложным, существует отличная библиотека, созданная DIaLOGIKa , которая называется b2xtranslator (Binary(doc, xls, ppt) в OpenXMLTranslator).Он имеет большинство (если не все) двоичных структур для .doc, .xls и .ppt, сопоставленных с объектами C #.
Хотя b2xtranslator намерен перевести двоичные офисные документы в новый формат OpenXML, вы можете использовать библиотеку для анализа документов и удаления макроэлементов самостоятельно.