vba 如何使用python(Anaconda)在指定的单元格位置将图片插入Excel使用vba

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/41286889/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-12 11:44:49  来源:igfitidea点击:

How to insert a picture into Excel at a specified cell position with python (Anaconda) use vba

pythonexcelvbaanacondawin32com

提问by Zzema

I try to use this link with vba codebut in Python it doesn't work.

我尝试将此链接与vba 代码一起使用, 但在 Python 中它不起作用。

import win32com.client    
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(r'C:/Users/Home/Desktop/expdata.xlsx')
wb.Worksheets("Report").Activate # выбор активного листа
sheet = wb.ActiveSheet
obj1=wb.ActiveSheet.Pictures.Insert(r'C:\Users\Home\Desktop\picture.jpg')
obj1.ShapeRange
obj1.ShapeRange.LockAspectRatio = msoTrue
obj1.ShapeRange.Width = 75
obj1.ShapeRange.Height = 100
obj1.Left = xlApp.ActiveSheet.Cells(i, 20).Left
obj1.Top = xlApp.ActiveSheet.Cells(i, 20).Top
obj1.Placement = 1
obj1.PrintObject = True
wb.save
wb.Close
Excel.Quit()

AttributeError Traceback (most recent call last) in () 9 sheet.Cells(20, 20).Select 10 #obj1=sheet.Shapes.AddPicture (r'C:/Users/Home/Desktop/picture.jpg', False, True, 10, 3, 100, 100) ---> 11 obj1=wb.ActiveSheet.Pictures.Insert(r'C:/Users/Home/Desktop/picture.jpg') 12 obj1.ShapeRange 13 obj1.ShapeRange.LockAspectRatio = msoTrue

AttributeError: 'function' object has no attribute 'Insert'

AttributeError Traceback (most recent call last) in () 9 sheet.Cells(20, 20).Select 10 #obj1=sheet.Shapes.AddPicture (r'C:/Users/Home/Desktop/picture.jpg', False, True, 10, 3, 100, 100) ---> 11 obj1=wb.ActiveSheet.Pictures.Insert(r'C:/Users/Home/Desktop/picture.jpg') 12 obj1.ShapeRange 13 obj1.ShapeRange。 LockAspectRatio = msoTrue

AttributeError: 'function' 对象没有属性 'Insert'

回答by wkzhu

Unless you absolutely need to use VBA, this sort of thing can be done thru just Python using xlsxwriter: http://xlsxwriter.readthedocs.io/example_images.html

除非你绝对需要使用 VBA,否则这种事情可以通过使用 xlsxwriter 的 Python 来完成:http://xlsxwriter.readthedocs.io/example_images.html

import xlsxwriter

# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook('images.xlsx')
worksheet = workbook.add_worksheet()
worksheet.insert_image('B2', 'python.png')

回答by Aravinth Balajee

I found this code to be working.

我发现这段代码有效。

import win32com.client    
pic_path=r'file_path.png'
Excel = win32com.client.Dispatch("Excel.Application")
wb = Excel.Workbooks.Open(r'C:/Users/Home/Desktop/expdata.xlsx')
ws =wb.Worksheets("Report")
left=ws.Cells(1,required_coloumn).Left
top=ws.Cells(required_row,1).Top
width=required_width
height=required_height
ws.Shapes.AddPicture(pic_path,LinkToFile=False, SaveWithDocument=True,left, top,width,height)
wb.save()
wb.Close()
Excel.Quit()