在接触社区之前,我一直在寻找和学习VBA。
我有一个工作簿,其中包含一个包含值列表的工作表。在另一个工作表中,该列表是其中一个单元格中的下拉列表。该单元格与许多vlookup和公式相关联,可以快速验证某些公司数据。
我一直在调整另一篇文章中的宏,并让它从列表中复制值并保存到我想要的位置,并将其命名为我想要的。我还没有重复这个过程......有什么建议吗?这是我到目前为止一直在搞乱的代码。
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
答案 0 :(得分:0)
我能看到的唯一问题是使用ActiveWorkbook
。尝试将wb设置为您正在使用的工作簿的名称。
这是从录制的宏开始的第一个技巧之一,你必须摆脱记录器使用特定名称开始的所有ActiveSheet
和ActiveWorkbook
引用。 VBA表现得更好。
答案 1 :(得分:0)
Sub create()
Const FPATH As String = "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