2009-10-21 11 views
1

Dans Excel VBA (ou si vous pouvez en C#, j'utilise la bibliothèque d'objets Excels à partir de .NET), comment copier une feuille de calcul d'un classeur à une autre feuille dans un autre classeur. Fondamentalement, ce que je fais est de copier chaque feuille dans une feuille de calcul centrale dans un autre classeur et ensuite faire tout ce que j'ai besoin de faire là. J'ai essayé d'utiliser la méthode Range.Copy, j'ai donné le paramètre Destination comme la gamme de l'autre classeur. Cela a fonctionné parfaitement, mais il y a un problème, c'est-à-dire que chaque fois que je le copie, il remplace les anciennes données dans cette feuille de calcul. Comment est-ce que je fais quelque chose comme si que quand je le colle colle à la fin de la feuille.Excel feuille de calcul

EDIT: J'ai cherché et trouvé un moyen, mais maintenant, quand je copie les cellules je reçois une exception COM avec le message « Pour coller toutes les cellules à partir d'une feuille de calcul Excel dans la feuille de calcul, vous devez coller dans le première cellule (A1 ou R1C1). "

Voici le code, il est en C#

logWorksheet = logWorkbook.ActiveSheet as Excel.Worksheet; 

Excel.Range tempRange = logWorksheet.Cells[logWorksheet.Rows.Count, "A"] as Excel.Range; 
tempRange = tempRange.get_End(Excel.XlDirection.xlUp); 

int emptyRow; 

if (tempRange.Row > 1) 
    emptyRow = tempRange.Row + 1; 
else 
    emptyRow = tempRange.Row; 

string copyLocationAddress = Convert.ToString(emptyRow); 

Excel.Range copyLocation = logWorksheet.get_Range(
          "A" + copyLocationAddress, Type.Missing) as Excel.Range; 

// copy whole workbook to the central workbook 
tempLogSheet.Cells.Copy(copyLocation); 
+0

feuilles de travail ont une taille finie, donc si vous copiez des feuilles entières , il n'y a pas de place pour "ajouter" plus d'un à une seule feuille de calcul. – wakingrufus

Répondre

1

- MISE À JOUR -

Cette copie extrait les cellules A1: A3 de Book1 à Book2. Il trouvera la dernière cellule utilisée dans Book2 et ajoutera les données en dessous.

Sub CopyRange() 

Dim source As Worksheet 
Dim destination As Worksheet 
Dim emptyRow As Long 

Set source = Workbooks("Book1.xlsx").Sheets("Sheet1") 
Set destination = Workbooks("Book2.xlsx").Sheets("Sheet1") 

'find empty row (actually cell in Column A)' 
emptyRow = destination.Cells(destination.Rows.Count, 1).End(xlUp).Row 
If emptyRow > 1 Then 
    emptyRow = emptyRow + 1 
End If 

source.Range("A1:A3").Copy destination.Cells(emptyRow, 1) 

End Sub 

- VIEUX -

Cette copie d'échantillons toutes les feuilles de Book1.xlsx à Book2.xlsx:

Workbooks("Book1.xlsx").Worksheets.Copy Before:=Workbooks("Book2.xlsx").Sheets(1) 
+0

En effet, c'est le cas. Mais je veux copier le contenu de la feuille à une autre feuille qui est dans un autre classeur;) – akif

+0

Peut-être que vous devriez clarifier le titre à «contenu de feuille de calcul de copie d'Excel» au lieu de simplement la feuille de calcul;) – Marc

+0

bien, il renvoie 1048577 – akif

Questions connexes