2010-09-07 5 views
2

J'ai des problèmes avec celui-ci. J'ai un fichier xls qui contient une seule feuille de données. Dans mon application principale, un classeur différent, je veux ouvrir ce fichier xls feuille unique et copier la feuille dans le classeur en cours.VBA: Ouvrir un fichier xls et l'ajouter au classeur en cours

Je peux le faire si je sélectionne la plage sur le fichier source à copier mais ce fichier unique peut changer donc je préfère trouver une solution qui copie juste le fichier entier. C'est une partie du code avec lequel j'ai travaillé:

Set src = Workbooks.Open(Filename:="thefile.xlsx") 

Range("F4:F67").Copy 
ThisWorkbook.Activate 
Sheets("Result").Activate 
Range("A1").Select 
ActiveSheet.Paste 

J'apprécie n'importe quelle aide avec ceci.

Merci

Répondre

4

Voici une solution simple qui ne nécessite pas .Choisir ou .Activate.

Sub getSheetFromA() 
    getSheet "a.xls", 1 
End Sub 

Sub getSheet(filename As String, sheetNr As Integer) 
    Dim srcWorkbook As Workbook 

    Set srcWorkbook = Application.Workbooks.Open(filename) 
    srcWorkbook.Worksheets(sheetNr).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 

    srcWorkbook.Close 
    Set srcWorkbook = Nothing 
End Sub 
+0

Merci pour cette – Ian

+0

peut-être ajouter des variables lecteur et le répertoire 'sous getSheet (lecteur sous forme de chaîne, répertoire sous forme de chaîne, nom de fichier sous forme de chaîne, sheetNr Integer) ChDrive lecteur ChDir Répertoire ....' –

2

J'ai trouvé une solution:

Set src = Workbooks.Open(Filename:="file.xlsx") 
Cells.Copy 

ThisWorkbook.Activate 
Sheets("Result").Activate 
Range("A1").Select 
ActiveSheet.Paste 
Questions connexes