Aktivieren von Excel-Makro-codes?

Arbeite ich in einem bestehenden Projekt die Basis tun, Excel-Klasse zum kopieren von Werten aus einem Arbeitsblatt Einer anderen B. Es gibt einige Formeln und Add-in-Funktionen in ws-A-Zellen. Die copy-codes verwendet werden, um zu kopieren, nur Werte, die sich zum ws B als Ergebnis. Hier ist ein block des codes vereinfacht:

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, ....);

Das problem, das ich habe ist, dass die Kopien in Zellen destB.xls sind alle markiert als "#NAME?". Sie sollen Werte kopiert. Ich öffne die excel-Quelldatei und ich kann sehen, dass die Daten in der Quell-Bereich sind aktualisiert mit Werten. Jedoch, wenn ich meine codes, die Werte scheinen nicht verfügbar.

Ich denke, dass die Excel-Anwendung, die ich meine codes nicht habe Makro aktiviert. Dies kann ein Grund sein, Werte können nicht kopiert werden. Zum Beispiel, wenn ich öffnen Sie die excel-Quelldatei, ich werde sehen, eine Aufforderung zum aktivieren oder deaktivieren von Makros. Wenn ich auf Enable-Schaltfläche, excel wird einige Zeit dauern, um die Anzeige von Werten in Daten-Zellen.

Wenn das der Grund ist, gibt es eine Möglichkeit, in den codes zum aktivieren von Makros, so dass alle Formeln in den Zellen wird in der Lage sein, die Werte zu aktualisieren?

Ein weiterer Grund könnte verursacht werden durch OS-oder Windows-Sicherheits-updates. Nicht sicher, ob alle Windows-Sicherheits-Einstellungen beeinflussen können Excel-Makros. Wenn dies der Fall ist, sollte ich ändern, um Windows-security-Ebene oder in irgendeiner Weise zu zwingen mit Makros in mein Projekt?

Übrigens, mein Projekt läuft unter Windows XP und Windows 2008 Server, Office Excel 2003 installiert. Das Projekt wurde durchgeführt in VS 2008.

  • makro zum aktivieren der Makros? 🙂
  • Senken Sie die Excel-makro-Sicherheitsstufe auf Ihrem computer, aber alle, die Sie senden die Datei wird immer noch gefragt, ob Sie Makros aktivieren.
  • Ich habe versucht, excel-makro-Warnungen auf den niedrigsten, aber es funktioniert immer noch nicht. Irgendwie meine codes das gleiche tun wie ich interaktiv öffnen Sie Excel. stellen Sie kopieren und speziellen paste, aber die codes nicht kopieren Werte als ich erwartet hatte.
InformationsquelleAutor David.Chu.ca | 2011-01-28
Schreibe einen Kommentar