Excel VBA 创建工作簿并填充工作表

Posted

技术标签:

【中文标题】Excel VBA 创建工作簿并填充工作表【英文标题】:Excel VBA Create Workbook and populate with sheets 【发布时间】:2018-02-26 22:19:40 【问题描述】:

(Excel 2007)

我有两段代码。

创建并保存一个新的 Excel 工作簿:

Sub NewWorkBook()

Set NewBook = Workbooks.Add
   With NewBook
   .SaveAs Filename:="NewBook.xlsx"
   End With

End Sub

另一个创建工作表:

Public Sub CreateWorksheets()

Dim n As Integer
n = 1
Dim WrkSheet As Worksheet
For n = 1 To 31
  If n > Worksheets.Count Then
  Set WrkSheet = Sheets.Add(After:=Sheets(Worksheets.Count))
  Else
  Set WrkSheet = Sheets(Worksheets.Count)
  End If
WrkSheet.Name = n
Next n
End Sub

我需要使用这些来创建“工作簿 B”并使用工作表填充它,但所有代码都必须从“工作簿 A”运行。

我可以让第一个 sub 来创建工作簿,但 CreateWorksheets sub 只能在包含代码的工作簿上工作 - 然后只有在我删除了所有工作表后才删除一个工作表。

有什么想法吗?

【问题讨论】:

我很确定,如果您在第二个宏中将您的对象限定在它们所在的工作簿中,那将起作用 - 例如,使用If n > Worksheets.Count Then 而不是使用If n > Workbooks("NewBook.xlsx").Worksheets.Count Then 【参考方案1】:
 Sub NewWorkBookAndSheets()
 Dim NewBook As Workbook
 Dim n As Integer
 Dim start As Integer

 Set NewBook = Workbooks.Add
 With NewBook
     start = .Worksheets.Count + 1
     if start < 31 then 

     For n = start  To 31
          .Sheets.Add After:=Sheets(n - 1)
     Next n
     For n = 1 To 31
        .Worksheets(n).Name = n
     Next n
     end if
    .SaveAs Filename:="NewBook.xlsx"
 End With

 End Sub

【讨论】:

准确!感谢您的快速回复。

以上是关于Excel VBA 创建工作簿并填充工作表的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA如何填充不同工作表中的值

在 Excel 中使用 VBA 将所有工作表的填充颜色设置为“无填充”

VBA 复制工作表至新的工作簿中的工作表

如何(如果可能)从 VBA Excel 2010 的工作表中定义和填充全局数组变量?

使用UIpath在Excel中的数据透视表

从 VBA 打开工作簿并禁用 Workbook_Open() 代码?