我在python中遇到了一些PasteSpecial问题。这是示例代码:
import win32com.client as win32com
from win32com.client import constants
xl = win32com.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
wb = xl.Workbooks.Add ()
Sheet1 = wb.Sheets("Sheet1")
# Fill in some summy formulas
for i in range(10):
Sheet1.Cells(i+1,1).Value = "=10*"+str(i+1)
Sheet1.Range("A1:A16").Copy()
Sheet1.Range("C1").Select()
Sheet1.PasteSpecial(Paste=constants.xlPasteValues)
我收到以下错误:
TypeError: Paste() got an unexpected keyword argument 'Paste'
我知道paste是一个关键字参数,因为这里有MSDN: http://msdn.microsoft.com/en-us/library/office/ff839476(v=office.15).aspx
知道它为什么不让我这样做?在网上真的找不到多少。
编辑解决方案:
import win32com.client as win32com
from win32com.client import constants
xl = win32com.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
wb = xl.Workbooks.Add ()
Sheet1 = wb.Sheets("Sheet1")
# Fill in some summy formulas
for i in range(10):
Sheet1.Cells(i+1,1).Value = "=10*"+str(i+1)
Sheet1.Range("A1:A16").Copy()
Sheet1.Range("C1").PasteSpecial(Paste=constants.xlPasteValues)
# OR this I just found right after I posted this works as well:
xl.Selection.PasteSpecial(Paste=constants.xlPasteValues)
答案 0 :(得分:2)
您可以通过Excel vb中的执行宏获取xlPasteFormats的值:
> data
xlPasteFormats的值是-4122
在Python脚本中,您可以使用
Sub Macro2()
Range("A7").Select
ActiveCell.FormulaR1C1 = xlPasteFormats
End Sub
答案 1 :(得分:1)
我不使用python但是要在Excel-VBA中执行PasteSpecial
,你必须提到你想要执行pastespecial的单元格,所以试试
Sheet1.Range("C1").PasteSpecial(Paste=constants.xlPasteValues)
如果你想要一个简单的粘贴,那么我想这应该可行
Sheet1.Paste