VB 打开Excel 提示 对象 “Open” 方法“workbook” 失败

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB 打开Excel 提示 对象 “Open” 方法“workbook” 失败相关的知识,希望对你有一定的参考价值。

Public mobjExcel As Excel.Application
Public xlsheet As Excel.Worksheet

Public Sub OpenExcel()
On Error GoTo err
Dim FilePitch As String
Dim FileRoll As String
Dim pWnd As Long
FilePitch = Main.Filename.Caption '

Set mobjExcel = Nothing
Set mobjExcel = CreateObject("Excel.Application")
mobjExcel.Workbooks.Open FilePitch, False, True

mobjExcel.DisplayAlerts = False
mobjExcel.AlertBeforeOverwriting = False
mobjExcel.Visible = True

Exit Sub
err:
MsgBox err.Description

参考技术A 在excel的VBA下测试正常,看您的 Main.Filename.Caption 是否是合法的文件名路径。
还有,这个文件是否已经被打开,是否存在。
引用的excel库是否还正常。追问

VB中excel库显示是正常的,在别的电脑是能打开的,任务管理中显示有execel 文件被打开 但是报错

参考技术B 你的过程是写在通用模块里的吧?那么
Main.Filename.Caption
没有意义,你需要由参数传入文件名字。比如:
Public Sub OpenExcel(fileName as string)

FilePitch = fileName追问

main 是窗体, filename 是lable,在别的电脑是能打开的,任务管理中显示有execel 文件被打开 但是报错

追答

如果你的函数 OpenExcel 是写在窗体模块是没问题的。
既然别的电脑上没问题,那可能是你的OFFICE版本问题。好像07后的版本是不行的。

本回答被提问者采纳
参考技术C 调试跟踪一下你的FilePitch变量值,是否对应有Excel文件

python如何操作当前已经打开的excel?

对人已经打开的excel如何操作?
vb中人写法是:getobject(,"Excel.Application")

python怎么写?
注意:是已经人为打开的excel,不要open方法重新打开的那种

读取一个Excel的基本流程
1. 双击打开一个Excel文件
2. 选择sheet
3. 对sheet里面的东西进行操作
在python中我们使用第三方模块 openpyxl模块操作Excel
ps:这个模块不是python自带的 是第三方模块需要我们下载的
进入终端输入: pip install openpyxl
如果想要下载快点:百度搜索 python第三方源
from openpyxl import load_workbook

# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2. 选择sheet
# 2.1 获取所有sheet
# print(workbook.sheetnames)

# 2.2 选择sheet
sheet = workbook["Sheet1"]
print(sheet.max_row) # 最大行号
print(sheet.max_column) # 最大列号

# 2.3 我们选择了sheet后就可以去操作数据了
# cell = sheet.cell(1, 1) # 获取到单元格
# print(cell.value)

sheet 相关操作
from openpyxl import load_workbook

# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2. 选择sheet
# 2.1 获取所有sheet
# print(workbook.sheetnames)

# 2.2 选择sheet
# sheet = workbook["Sheet1"]
# 2.3 基于索引的方式获取sheet
# sheet = workbook.worksheets[0]
# 3. 获取到所有的sheet
# for name in workbook.sheetnames:
# sheet = workbook[name]
# cell = sheet.cell(1, 1)
# print(cell.value)

读单元格的数据
from openpyxl import load_workbook

# 1. 打开Excel文件
workbook = load_workbook("p1.xlsx")
# 2 获取sheet
sheet = workbook.worksheets[0]

# 获取到第N行第N列的单元格
# cell = sheet.cell(1, 2)
# print(cell.value)

# 获取到某个单元格

# cell = sheet['A2']
# print(cell.value)

# print()
# for cell in sheet[1]: # 获取到第一行的内容
# print(cell.value)

# 获取到所有的行的数据 获取到一列的值
# for row in sheet.rows:
# print(row[0].value)

# 获取到所有的列的数据 获取到一行的值
for col in sheet.columns:
print(col[0].value)

写Excel
# 在Excel中想要写文件 大致可以分为两种
# 1. 在原有的Excel的基础上写内容
# 2. 在一个新的Excel里面写内容

1. 打开Excel表格
2. 找到单元格 修改写入内容
3. 保存

# from openpyxl import load_workbook
#
# # 1. 打开Excel文件
# workbook = load_workbook("p1.xlsx")
# # 2 获取sheet
# sheet = workbook.worksheets[0]
#
# # 获取到第N行第N列的单元格
# # cell = sheet.cell(1, 2)
# # print(cell.value)
#
# # 获取到某个单元格
#
# # cell = sheet['A2']
# # print(cell.value)
#
# # print()
# # for cell in sheet[1]: # 获取到第一行的内容
# # print(cell.value)
#
#
# # 获取到所有的行的数据 获取到一列的值
# # for row in sheet.rows:
# # print(row[0].value)
#
# # 获取到所有的列的数据 获取到一行的值
# for col in sheet.columns:
# print(col[0].value)

# from openpyxl import workbook
# wb = workbook.Workbook() # 创建一个Excel会默认有一个sheet 就叫 Sheet

# 1. 修改sheet名称
# sheet = wb.worksheets[0]
# sheet.title = '数据集'
# wb.save('p2.xlsx')

# 2. 创建一个新的sheet 还可以设置颜色
# sheet = wb.create_sheet('工作计划', 1)
# sheet.sheet_properties.tabColor = 'FFB6C1'
# wb.save('p2.xlsx')

# 3. copy sheet
# sheet = wb.create_sheet('工作计划')
# sheet.sheet_properties.tabColor = 'FFB6C1'
#
# new_sheet = wb.copy_worksheet(wb['Sheet'])
# new_sheet.title = '新的计划'
# wb.save('p2.xlsx')
# print(wb.sheetnames)
# sheet = wb.worksheets[0]
# cell = sheet.cell(1, 1)
# cell.value = '哈哈哈'
#
# wb.save('p2.xlsx')

from openpyxl import load_workbook

# 1. 打开Excel文件
workbook = load_workbook("p2.xlsx")
# 2 获取sheet
sheet = workbook.worksheets[0]
# 1. 获取某个单元格 修改值
# cell = sheet.cell(1, 1)
# cell.value = '哈哈哈'
# wb.save('p2.xlsx')
# 2. 获取某个单元格 修改值
# sheet['B3'] = '光'
# workbook.save('p2.xlsx')

# cell_list = sheet["B2": 'C3']
# for row in cell_list:
# for cell in row:
# cell.value = '新的值'
# workbook.save('p1.xlsx')

for row in sheet.iter_rows(min_row=5, min_col=1, max_col=7, max_row=10):
for cell in row:
cell.value = 'oo'
workbook.save('p1.xlsx')

r row in sheet.iter_rows(min_row=5, min_col=1, max_col=7, max_row=10):
for cell in row:
cell.value = ‘oo’
workbook.save(‘p1.xlsx’)追问

你确定已经打开的p1.xlsx表,还可以load_workbook("p1.xlsx")?

参考技术A openpyxl 可以读取人已经打开的excel文件,也可以操作单元格赋值等,但是最后一步保存的时候不能和已打开的文件相同,比如已打开的文件a.xlsx,保存的时候你可以换个名字b.xlsx,相同就会报错追问

python用load或者open方法等打开的excel表,人可以编辑,python也可以操作。
问的是:人打开的表,python怎么编辑,,,比如人打开了1.xls,2.xls,怎么让python操作已经打开了的1.xls?

以上是关于VB 打开Excel 提示 对象 “Open” 方法“workbook” 失败的主要内容,如果未能解决你的问题,请参考以下文章

VB读取excel,提示不能创建对象..

使用VB自动化IE“目标另存为”

如何用Workbooks.Open打开Excel工作簿,如何操作?

vb.net获取excel页面高度

vb中怎样把窗体控件的数据写入EXCEL模板中

怎样用VB读取Excel文件中表格中的数据?