C # - Wie kopiert man ein einzelnes Excel-Arbeitsblatt von einer Arbeitsmappe in eine andere?

8

Ich muss ein Arbeitsblatt von einer Arbeitsmappe in eine andere kopieren und bin ein wenig festgefahren. Die Prämisse ist, dass ich eine "Master" Arbeitsmappe habe, die die Vorlagen für eine Reihe von Berichten speichert, und ich muss dann eine leere Kopie eines bestimmten Arbeitsblattes erstellen und es in einer neuen Arbeitsmappe hinzufügen.

Das habe ich bisher:

%Vor%

Das einzige Problem, das ich im Moment habe, ist, dass wenn ich .Save () auf dem Arbeitsblatt aufruft, es alle Arbeitsblätter aus der ursprünglichen Arbeitsmappe in eine neue Arbeitsmappe speichert. Irgendwelche Ideen, wie man das korrigiert?

Vielen Dank im Voraus,
Sonny

    
Sonny Boy 27.09.2010, 22:24
quelle

3 Antworten

13

Sie können auch die Sheet.Copy () -Methode verwenden.

Grundsätzlich kopiert Sheet.copy das Blatt und erstellt automatisch eine neue Arbeitsmappe zur selben Zeit.

Fügen Sie Ihrem Code nach Ihrem Aufruf von Worksheets.get_Item folgende Zeilen hinzu:

%Vor%

Hier ist auch die Referenz für die Funktion Copy (): MSDN-Verknüpfung

>     
Slider345 27.09.2010, 23:23
quelle
3

Mir ist klar, dass dies eine etwas späte Antwort ist, aber ich habe damit ziemlich viel Probleme gehabt, also dachte ich mir, dass ich meine Lösung posten würde, damit jemand anderen dieses Problem haben könnte.

Sie haben ein Vorlagenblatt, das Sie häufig ausfüllen möchten:

%Vor%     
mortysporty 14.09.2013 14:39
quelle
1

Ich würde gerne eine Antwort auf diese Frage geben, auch wenn es mehr als ein Jahr her ist, seit es darum gebeten wurde. Ich hatte das selbe Problem mit einem Projekt, das ich gerade entwickle, und ich brauchte eine Weile, um die Antwort zu finden. Ich werde mit VB.NET-Code anstelle von C # veröffentlichen, da ich nicht mit dem letzten vertraut bin.

Hier ist der Deal, um Blätter zwischen Excel-Arbeitsmappen zu kopieren, ist es absolut notwendig, nur ein Excel-Anwendungsobjekt zu verwenden und dann beide Arbeitsmappen mit dieser einzelnen Anwendung zu öffnen, dann können wir die bekannte Worksheet.Copy-Methode verwenden und einfach angeben dass das Blatt nach oder vor dem Blatt in dieser anderen Arbeitsmappe kopiert wird.

%Vor%

In diesem Fall ist die Excel-Anwendung, die ich verwende, diejenige, die mein Excel-Arbeitsmappe-Projekt ausführt, aber das würde auch funktionieren:

%Vor%

Natürlich werden in der Excel-Anwendung beide Arbeitsmappen angezeigt. Wenn Sie mit dem Kopieren fertig sind, sollten Sie die Quellarbeitsmappe schließen, wenn Sie sie nicht anzeigen möchten (oder zumindest nicht lange genug für den Benutzer).

%Vor%

So könnte ich es machen, der Benutzer sieht ein blinkendes neues Arbeitsbuch auftauchen und dann schließen, was nicht wirklich ordentlich ist, aber bis jetzt habe ich keine Ahnung, wie ich es sonst machen soll (oder diesen Kopiervorgang machen) in einer nicht sichtbaren Weise)

Ich hoffe, das hat noch einen gewissen Wert. Mit freundlichen Grüßen.

    
NickZucco 25.09.2014 13:12
quelle

Tags und Links