VBA: Création de nouveaux classurs à partir d'une list de valeurs avec VLookUps

J'ai cherché et j'ai appris tout ce que je peux sur VBA avant de join la communauté.

J'ai un classur avec une feuille avec une list de valeurs. Dans une autre feuille, cette list est un drop down menu dans l'une des cellules. Cette cellule est liée à des dizaines de vlookups et de formules pour valider rapidement certaines données de l'entreprise.

J'ai bien réglé une macro à partir d'une autre publication et je l'ai acheté pour copyr la valeur de la list et save où je la souhaite et nommer ce que je veux. Je n'ai pas encore réitéré le process … Quelques conseils? Voici le code avec lequel je me suis dérangé jusqu'ici.

Sub create() Dim wb As Workbook, sh1 As Worksheet, lr As Long, rng As Range Set sh1 = Sheets("GIW") Set sh2 = Sheets("3A") lr = sh1.Cells(Rows.Count, "A").End(xlUp).Row Set rng = sh1.Range("A2:A" & lr) For Each c In rng Set wb = ActiveWorkbook wb.Sheets.Add wb.Sheets(1).Range("D10") = c.Value wb.SaveAs c.Value & ".xlsx" = "C:\Users\ianc\Desktop\Exhibit 2 Data Validation.xlsx" wb.Close False Next End Sub 

 Sub create() Const FPATH As Ssortingng = "C:\_Stuff\" Dim wb As Workbook, sh1 As Worksheet, lr As Long, rng As Range Dim c As Range Set sh1 = ThisWorkbook.Sheets("GIW") lr = sh1.Cells(Rows.Count, "A").End(xlUp).Row Set rng = sh1.Range("A2:A" & lr) Set wb = ActiveWorkbook wb.Sheets.Add before:=wb.Sheets(1) For Each c In rng wb.Sheets(1).Range("D10") = c.Value wb.SaveCopyAs FPATH & c.Value & ".xlsx" Next wb.Close False End Sub 

Le seul problème que je peux voir est d'utiliser ActiveWorkbook . Essayez de définir wb au nom du classur avec lequel vous travaillez.

C'est l'un des premiers trucs à partir d'une macro enregistrée, vous devez vous débarrasser de toutes les references ActiveSheet et ActiveWorkbook que l'enregistreur met en ActiveSheet en utilisant les noms spécifiques. VBA se comporte mieux de cette façon.