xlApp = win32com.client.DispatchEx('KET.Application') xlApp.Visible = False xlApp.DisplayAlerts = 0 xlBook_1 = xlApp.Workbooks.Open(pth) xlBook_1.Worksheets.Add().Name = 'AAA' xlmodule = xlBook_1.VBProject.VBComponents.Add(sheet_name) code = '''sub MyVBA() sheets(1).select range("A1")=55 end sub''' xlmodule.CodeModule.AddFromString(code.strip()) xlBook_1.Application.Run('我的模块.MyVBA') xlBook_1.Close(True) # 括号里就是不保存修改 xlBook_1.quit() # 退出进程
时间: 2023-06-03 14:01:59 浏览: 267
这段代码主要是使用Python调用Excel的VBA宏来进行操作。具体的操作内容如下:
首先,使用win32com库创建Excel应用程序对象,并将其设为不可见并关闭警告信息。
然后,打开一个Excel文件,并在其中添加一个名为“AAA”的工作表。
接着,创建一个名为“sheet_name”的宏,在其中对第一个工作表中的A1单元格赋值为55。
最后,运行“我的模块.MyVBA”宏,并关闭文件。
相关问题
#-*- coding:utf-8 -*- import os #from win32com.client import Dispatch, constants, gencache, DispatchEx import win32api import win32com.client def pdf_xls(root,filename,name): if(filename.find('.xlsx')>=0): pdfname = root+os.sep+filename.replace(".xlsx", ".pdf") else: pdfname = root+os.sep+filename.replace(".xls", ".pdf") xlApp=win32com.client.Dispatch('Excel.Application') xlApp.Visible = 0 xlApp.DisplayAlerts = 0 books = xlApp.Workbooks.Open(name,False) for sh in books.Sheets: sh.PageSetup.Orientation = 1 sh.PageSetup.Zoom = False sh.PageSetup.FitToPagesWide= 1 books.ExportAsFixedFormat(0, pdfname) books.Close() print('保存 PDF 文件:', pdfname) xlApp.Quit() def pdf_doc(root,filename,name): if(name.find('.docx')>=0): pdfname =root+os.sep+filename.replace(".docx", ".pdf") else: pdfname = root+os.sep+filename.replace(".doc", ".pdf") print(pdfname) #print(pdfwj) exec_tool = 'kwps.application' word = win32com.client.DispatchEx(exec_tool) word.Visible = 0 word.DisplayAlerts = 0 password='666666' doc = word.Documents.Open(name,True,False,False,password,password,Visible=False) doc.SaveAs(pdfname,FileFormat=17) #doc.ExportAsFixedFormat(0,pdfname) doc.Close() word.Quit() if __name__ == "__main__": path=input('输入文档路径') for root, directories, files in os.walk(path): n=0 for fileList in files: name=root+ os.sep+fileList #文件名 if (name.find('.doc')>=0): print(name+"开始执行") try: pdf_doc(root,fileList,name) print(name+"已完成执行") except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(str(name)+str(re)+"\n") f.close() if name.find('.xls')>=0: print(name+"开始执行") try: pdf_xls(root,fileList,name) #root 目录 fileList 文档名称 name 文件加文档名 except Exception as re: f=open("error_data.txt","a",encoding='UTF-8') f.write(name+str(re)+"\n") f.close()这个程序怎么用
这是一个Python程序,用于将Excel或Word文档转换为PDF格式。你需要按照以下步骤使用它:
1. 安装Python环境:如果你没有安装Python环境,请先下载并安装Python。建议使用Python 3.x版本。
2. 安装必要的库:在命令行中使用pip install pywin32安装pywin32库。
3. 打开命令行:在你的电脑上打开命令行。
4. 进入程序所在目录:使用cd命令进入程序所在的目录。
5. 运行程序:在命令行中输入python 文件名.py,其中“文件名”为程序的文件名。
6. 输入文档路径:程序会提示你输入文档路径,即需要转换的文档所在的目录。
7. 程序会自动将该目录下所有Excel或Word文档转换为PDF格式,并保存在原目录下。如果有转换失败的文档,程序会将其记录在error_data.txt文件中。
注意:在使用该程序前,建议先备份原始文档,以免出现意外情况。
VB6 打开Excel,程序容易闭退,请优化源代码:Function ReadMateria() As Boolean Dim xlRow As Integer, xlBook As New Excel.Workbook, xlSheet As New Excel.Worksheet, xlApp As New Excel.Application Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(ProcessPath.Text) Set xlSheet = xlBook.Worksheets("Material") For xlRow = 1 To 30 xlSheet.Cells(xlRow + 5, xlCol + 2) = "00" Next If Not xlBook Is Nothing Then xlBook.Close (True) Set xlBook = Nothing Set xlSheet = Nothing xlApp.Quit Set xlApp = Nothing End Function
以下是经过优化后的代码,可以避免程序崩溃:
Function ReadMateria() As Boolean
Dim xlBook As Excel.Workbook, xlSheet As Excel.Worksheet, xlApp As Excel.Application
On Error GoTo ErrHandler
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open(ProcessPath.Text)
Set xlSheet = xlBook.Worksheets("Material")
For xlRow = 1 To 30
xlSheet.Cells(xlRow + 5, xlCol + 2) = "00"
Next
xlBook.Close (True)
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
ReadMateria = True
Exit Function
ErrHandler:
xlBook.Close (False)
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
ReadMateria = False
End Function
主要优化措施包括:
1. 使用 Dim 声明变量时,只需要声明变量类型即可,不需要再使用 New 关键字。
2. 使用 On Error GoTo ErrHandler 语句,避免程序出现错误时直接崩溃。
3. 在 ErrHandler 中关闭 Excel 文件,并释放所有对象的引用。
4. 将函数的返回值设为 True 或 False,以便在程序中判断是否读取成功。
阅读全文