2017-02-06 9 views
3

データをエクスポートするためのテンプレートファイルとして使用しているExcelシートがあります。データをExcelにエクスポートするOpen XMLでマクロを有効にする

ExcelシートはXLSMファイルであり、VBAで書かれたコードはほとんどありません。

タイムスタンプでファイルをコピーして名前を変更するたびに、コピーされたxlsmファイルにデータを書き込む必要がありますが、データは書き込まれません。

私はこれにOpen XMLライブラリを使用しています。

xlsxテンプレートファイルを使用すると同じことが働いています。

Open XMLでxlsm Excelマクロで書き込むことはできませんか?

「はい」の場合は、留意する必要があります。

+1

'SpreadsheetDocumentパッケージ= SpreadsheetDocument.Create(filePathに、SpreadsheetDocumentType.MacroEnabledWorkbook' –

+0

は、セルの値やマクロのコードのようにデータを書き込むしませんか? –

答えて

0

この回答のコードは、任意のExcelファイルをコピーし、マクロ有効ブックに切り替えます。私は単純なExcel 2016ワークブックとマクロが有効なワークブックに対してそれをテストしました。ソースファイルが存在するのと同じディレクトリに新しいファイルSaveMEW.xlsmを作成します。ソースファイルのフルパスが `_sourceFile variable 'に置かれていることを確認してください。

var _sourceFile = " PATH TO YOUR TEMPLATE FILE "; 

    using (var templateFile = File.Open(_sourceFile, FileMode.Open, FileAccess.Read)) 
     { 
      using (var stream = new MemoryStream()) 
      { 
       templateFile.CopyTo(stream); 
       using (var spreadsheetDocument = SpreadsheetDocument.Open(stream, true)) 
       {     
        spreadsheetDocument.ChangeDocumentType(SpreadsheetDocumentType.MacroEnabledWorkbook); 
       } 
       byte[] buffer = stream.ToArray(); 
       MemoryStream ms = new MemoryStream(buffer); 
       FileStream file = new FileStream(System.IO.Path.GetDirectoryName(_sourceFile) + "/SaveMEW.xlsm", 
        FileMode.Create, FileAccess.Write); 
       ms.WriteTo(file); 
       file.Close(); 
      } 
     } 
関連する問題