2016-01-28 1 views
0

J'ai essayé de google ceci pendant un moment et je ne peux pas obtenir ma syntaxe juste pour la question!Nom du classeur en tant que variable

En fait, au moment où j'ai WorkbookA.xlsm et mon code références directement « WorkbookA.xlsm »

Lorsque mon classeur est distribué, pas tout le monde quitte le nom même et il provoque des erreurs sur l'indice de gamme

La réponse est probablement très évidente, mais comment puis-je déclarer un classeur comme une variable ou similaire? thisworkbook.name?

Mon produit ouvre un classeur distinct, en tire des données et les place ensuite dans mon classeur. Je craignais que ce manuel ou similaire ne pose des problèmes si plusieurs d'entre eux sont ouverts?

Désolé pour la question stupide, mais j'espère que vous pouvez aider!

+2

Oui; Le classeur actuel (c'est-à-dire où vous codez des vies) est 'ThisWorkbook', son nom est' ThisWorkbook.Name' –

+2

sinon vous pouvez simplement dire "dim OrigWB comme classeur" puis "Définir OrigWB = ActiveWorkbook" puis travailler avec OrigWB au lieu de ActiveWorkbook ou ThisWorkbook. Vous aurez juste à déclarer ceci avant d'ouvrir les autres classeurs;) et pour le classeur que vous ouvrez, il sera le même mais au lieu de "= ActiveWorkbook" ce serait "= Workbooks.Open (* PathToYourWorkbook *)" – Kathara

Répondre

1

Cela devrait fonctionner

Option Explicit 

Sub WorkingWithDataFromOtherWorkBook() 

     'You can also Dim as Sheet and then set the sheet  
     Dim MasterWorkBook As Workbook 
     Dim DataSourceWorkBook As Workbook 

     Set MasterWorkBook = ThisWorkbook 
     'Set DataSourceWorkBook = Workbooks.Open(Filename:=" Full File Path Here") 
     Set DataSourceWorkBook = Workbooks.Open(Filename:="C:\Users\oosthjp\Desktop\Book1.xlsm") 

     'Simple copy paste code below 
     DataSourceWorkBook.Sheets("SheetReference").Range("SOMERANGE").Copy 
     MasterWorkBook.Sheets("SheetReference").Range("SOMERANGE").Paste 

     'Whatever other code you have goes here 

End Sub 
+1

Ou supprimez toutes les variables de MasterWorkbook et utilisez: ThisWorkBook.Sheets ("SheetReference"). Range ("SOMERANGE"). Coller – jkpieterse

+0

Bon point, merci @jkpieterse –