私は1つのワークシートAから別のものに値をコピーするためにExcelクラスをベースとする既存のプロジェクトを作業しています。B.いくつかの式とAddin関数がwsAセルにあります。コピーコードは、結果としてws Bに値のみをコピーするために使用されます。ここでは単純化されたコードのブロックです:Excelマクロのコードを有効にしますか?
using Excel = Microsoft.Office.Interop.Excel;
....
object missing = System.Type.Missing;
Excel.Application app = new Excel.Application();
// Creating Excel application with source workbook in memory
Excel.Workbook workbook = app.Workbooks.Open("SourceA.xls",
Excel.XlUpdateLinks.xlUpdateLinksNever,....);
...
app.Calculate() // Forcing to recalculate value in cells.
...
//create destination workbook
Excel.Workbook destWb = app.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
Excel.WorkSheet destSheet = (Excel.Worksheet)destWb.Worksheets[1];
Excel.Range destRange = (Excel.Range)destSheet.Cells[1, 1];
//rename sheet 1
destSheet.Name = "wsB Report";
//Set Source Data Range from
Excel.WorkSheet sourceWA = (Excel.Worksheet)workbook.Worksheets["wsA"];
//Get the predefined named range "DataRange" from source wsA
Excel.Range sourceRange = sourceWA.get_Range("DataRange", missing);
//copy data
sourceRange.Copy(missing);
//paste values and number formats
destRange.PasteSpecial(Excel.XlPasteType.xlPasteValuesAndNumberFormats,
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, missing, missing);
//paste formats
destRange.PasteSpecial(Excel.XlPasteType.xlPasteFormats,
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, missing, missing);
//paste column widths
destRange.PasteSpecial(Excel.XlPasteType.xlPasteColumnWidths,
Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, missing, missing);
....
destWb.SaveAs("destB.xls", missing, ....);
私が持っている問題はdestB.xlsでコピーセルはすべてとしてマークされていることである「#NAME?」。それらはコピーされた値でなければなりません。ソースファイルを開くと、ソース範囲内のデータが値で更新されていることがわかります。しかし、私のコードを実行すると、値は利用できないように見えます。
私のコードで作成したExcelアプリケーションでマクロが有効になっていない可能性があります。これは、値をコピーできない理由である可能性があります。たとえば、ソースファイルを開くと、マクロを有効または無効にするためのプロンプトが表示されます。 [有効にする]ボタンをクリックすると、データセルに値を表示するのに時間がかかります。
これが理由であれば、セル内のすべての数式が値を更新できるように、マクロを有効にする方法はありますか?
別の理由は、OSまたはWindowsのセキュリティ更新プログラムが原因である可能性があります。 Windowsセキュリティ設定がExcelマクロに影響するかどうかは不明です。このような場合は、Windowsのセキュリティレベルを変更するか、プロジェクトでマクロを有効にする方法を変更する必要がありますか?
ところで、私のプロジェクトは、Windows XPとWindows 2008 Serverで実行され、Office Excel 2003がインストールされています。このプロジェクトはVS 2008で行われました。
マクロを有効にするマクロ? :-) – Shoban
コンピュータのExcelマクロセキュリティレベルを下げることはできますが、ファイルを送信するユーザーは誰でもマクロを有効にするかどうかを確認するメッセージが表示されます。 –
Excelのマクロアラートを最も低く設定しようとしましたが、それでも動作しません。私と同じことをやっているコードは、インタラクティブにExcelを開きます。コピーと特殊なペーストを行いますが、コードは私が期待したように値をコピーしません。 –