首页 > 解决方案 > 使用 Python 将范围从一个 Excel 复制到另一个 Excel 时 Range 类的 PasteSpecial 方法失败

问题描述

我正在尝试使用 for 循环将一个范围从一个 excel 电子表格复制到另一个,但不断收到错误消息。我正在使用 win32com 和 python 来制作副本。

这是我的代码片段

params_columns = [1,3,5]
for x in params_columns:
        copy_range = "{}2:{}1048576".format(colnum_string(x + 1), colnum_string(x + 1))
        excel = Dispatch("Excel.Application")
        excel.Visible = 1
        source = excel.Workbooks.Open(filepath_first)
        excel.Range("A1:A3").Select()
        excel.Selection.Copy()
        copy = excel.Workbooks.Open(filepath_second)
        excel.Range("A1:A3").Select()

        # paste type https://docs.microsoft.com/en-us/office/vba/api/excel.xlpastetype
        excel.Selection.PasteSpecial(Paste=-4104)
        excel.Selection.PasteSpecial(Paste=8)

其中 colnum_string 将列号转换为字符串。

返回的错误如下:

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft Excel', 'PasteSpecial method of Range class failed', 'xlmain11.chm', 0, -2146827284), None)

谢谢你的帮助。

标签: pythonexcelcopy-pastewin32comdispatch

解决方案


推荐阅读