Laden...

PasteSpecial Problem in Zusammenhang mit Excel

Erstellt von Arktor vor 9 Jahren Letzter Beitrag vor 9 Jahren 3.023 Views
A
Arktor Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren
PasteSpecial Problem in Zusammenhang mit Excel

Guten Tag zusammen,

irgendwie verstehe ich die PasteSpecial-Methode nicht ganz. 🤔

Hier mein Code:

string file = @"C:\Temp\KPI\test.xlsx";
var excelApp = new Excel.Application();
excelApp.Visible = true;


Excel.Workbooks workbook = excelApp.Workbooks;

// öffne ausgewählte Exceldatei
Excel.Workbook book = workbook.Open(file);

// kopiere inhalt
Excel.Worksheet sheet = (Excel.Worksheet)book.Sheets[1];

sheet.UsedRange.Copy();

// schließe ausgewählte Exceldatei
book.Close();


// erstelle neue Exceldatei in Datensicht
Excel.Workbook dataBook = excelApp.Workbooks.Add();
Excel.Worksheet dataSheet = dataBook.Sheets[1];

try
{

    dataSheet.Cells[1, 1].PasteSpecial(Excel.XlPasteType.xlPasteFormats);
    dataSheet.SaveAs(@"C:\Temp\KPI\test_DataView.xlsx");
}
catch (Exception e)
{

    Console.WriteLine("Exception: " + e.Message);

    dataBook.Close(false);
}

workbook.Close();

excelApp.Visible = false;
excelApp.Quit();

Im Try-Block wird die PasteFormats Methode nicht ausgeführt! Folgende Fehlermeldung:
"Exception: Die PasteSpecial-Eigenschaft des Range-Objects kann nicht zugeordnet werden."

Seltsamerweise funktioniert die Methode mit dem Parameter xlPasteAll!
Obwohl die Formatierung nicht mit übertragen wird, wieso auch immer.

Hoffe einer versteht dieses Mysterium und kann mir eine Lösung mitteilen =)

Danke im Voraus!

1.696 Beiträge seit 2006
vor 9 Jahren

Hallo,

geraten: vielleicht die Quelldatei erst nach dem Einfügen schließen?

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

A
Arktor Themenstarter:in
2 Beiträge seit 2014
vor 9 Jahren

hmm, kann ich leider jetzt nicht ausprobieren, da im Code jetzt ein bisschen weiter bin^^ Weiß zwar nicht warum dieser Fehler passiert, habe aber "Drumherum" geschrieben.

Habe davor noch ein Range Object erstellt und dann darauf die PasteSpecial-Methode angewandt.

Excel.Range destRange = dataSheet.get_Range("A1");
destRange.Cells[1, 1].PasteSpecial(Excel.XlPasteType.xlPasteFormats);

Seltsamerweise funktioniert dieses Konstrukt.