将Excel工作簿添加到工作簿末尾

4

我正在尝试将Excel工作表添加到工作簿的末尾,保留第一个工作表用于汇总。

import win32com.client

Excel = win32com.client.DispatchEx('Excel.Application')
Book = Excel.Workbooks.Add()

Excel.Visible = True

Book.Worksheets(3).Delete()
Book.Worksheets(2).Delete()

Sheet = Book.Worksheets(1)

Sheet.Name = "Summary"

Book.Worksheets.Add(After=Sheet)

Sheet = Book.Worksheets(2)

Sheet.Name = "Data1"

这段代码使用了After=Sheet,但仍将新工作表添加到左侧,并且当我修改名为“Data1”的工作表时,它会覆盖名为“Summary”的工作表。
这与此问题类似:在Excel中将工作表添加到工作簿末尾(正常方法不起作用?),但给出的解决方案对我无效。

不要使用After = Sheet,而是尝试使用After = Sheets.Count(我对PythonVBA不太熟悉,但您需要确保将其添加到最后一个工作表之后。) - BruceWayne
当您尝试给出的解决方案时会发生什么? - wwl
After=Book.Worksheets.CountAfter=Book.Sheets(Book.Sheets.Count)都不起作用。它们会产生上述描述的相同行为。 - PProteus
另一个有趣的异常是,当我使用 Sheet.Move(After = Sheets.Count) 或类似语句时,它会将工作表移动到一个新的工作簿中。 - PProteus
在VBA中,我使用Sheets.Add, Sheets(Sheets.Count)作为快捷方式,在末尾添加工作表...所以在Python中也是如此。 (我认为在这种情况下只需要添加三个“book”对象。) - ashleedawg
3个回答

16

尝试通过添加 Before = None 来使用此功能:

add = Book.Sheets.Add(Before = None , After = Book.Sheets(book.Sheets.count))
add.Name = "Data1"

@PPotreus,这就是你在寻找的答案。请接受它作为最佳答案。 - Rafael Ortega
原始帖子中 Sheets 是在哪里定义的? - LeanMan
.Count 应该用大写字母 C。 - jur

1
尝试使用 Sheet = excelApp.ActiveSheet
Book.Worksheets.Add(After=Sheet)
Sheet = Book.ActiveSheet
Sheet.Name = "Data1"

很抱歉,但新的工作表仍然没有出现在现有工作表的右侧。 - PProteus

-1

导入 win32com.client 作为 win32

xl = win32.gencache.EnsureDispatch('Excel.Application') xl.Sheets.Add(After=xl.ActiveSheet).Name ="你的表格名称"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接