Excel 关于 Workbooks.Open 打开赋值的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel 关于 Workbooks.Open 打开赋值的问题相关的知识,希望对你有一定的参考价值。
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Visible = True
Set xlsModelBook = xlsApp.Workbooks.Open(Filename:=ThisWorkbook.Path + "\model\" + Trim(Sheet1.Cells(i, 2)))
Debug.Print xlsModelBook.Sheets.Count
以上代码在有的电脑上执行没有问题,有的电脑上 跑到
Debug.Print xlsModelBook.Sheets.Count
的时候 就会出现如下提示
xlsModelBook 对象变量或 With 块变量未设置。
运行到出错的地方时对应的Excel文件已经打开了,但是xlsModelBook 的值还是nothing
这是什么问题呢?
注:都是XP系统且都安装了Office 2007 。
Dim xlsApp As New Excel.Application
Dim xlsWorkBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet
Dim xlsRange As Excel.Range
Dim xlsSrcRange As Excel.Range
strOpenFile = Server.MapPath("../ReportFormat/test.xls")
strSaveFile = Server.MapPath("../filetemp/testtarget.xls")
xlsApp.Application.DisplayAlerts = False
xlsApp.Visible = False
'打开格式文件
xlsWorkBook = xlsApp.Workbooks.Open(strOpenFile)
xlsSheet = xlsWorkBook.Sheets(1)
'根据需要的sheet数拷贝格式
xlsSheet.Copy(, xlsWorkBook.Sheets(1))
'获取需要填入数据的sheet
xlsSheet = xlsWorkBook.Sheets(1)
'选择拷贝源的行的下一行
xlsRange = xlsSheet.Rows(3)
'插入一行
xlsRange.Insert()
xlsRange.Insert()
'选择拷贝源
xlsSrcRange = xlsSheet.Rows(2)
'把源拷贝到刚插入的行
xlsSrcRange.Copy(xlsSheet.Rows(3))
xlsSrcRange.Copy(xlsSheet.Rows(4))
'进行数据填充,实际代码根据记录数使用循环
xlsSheet.Cells(2, 1) = "A"
xlsSheet.Cells(2, 2) = 300
xlsSheet.Cells(3, 1) = "B"
xlsSheet.Cells(3, 2) = 400
xlsSheet.Cells(4, 1) = "C"
xlsSheet.Cells(4, 2) = 500
'sheet重命名
xlsSheet = xlsWorkBook.Sheets(1)
xlsSheet.Name = "200501"
xlsSheet = xlsWorkBook.Sheets(2)
xlsSheet.Name = "200502"
'另存为结果表
xlsWorkBook.SaveAs(strSaveFile)
'关闭
xlsWorkBook.Close()
xlsApp.Quit()
xlsApp = Nothing
xlsWorkBook = Nothing
xlsSheet = Nothing
xlsRange = Nothing
xlsSrcRange = Nothing
GC.Collect() 参考技术B 是xlsModelBook 没赋上值,先打开,再赋对象
xlsApp.Workbooks.Open(Filename:=ThisWorkbook.Path + "\model\" + Trim(Sheet1.Cells(i, 2)))
Set xlsModelBook =ActiveWorkbook
Debug.Print xlsModelBook .Worksheets.Count
如果还不行的话,再看看路径是否正确,文件是否存在
Trim(cstr(Sheet1.Cells(i, 2))) 参考技术C dim Fn as string
fn=ThisWorkbook.Path + "\model\" + Trim(Sheet1.Cells(i, 2))
if dir(fn)<>"" then
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Visible = True
Set xlsModelBook = xlsApp.Workbooks.Open(Filename:=fn )
Debug.Print xlsModelBook.Sheets.Count
end if 参考技术D 应该是在Open的时候出错了。。。
你的文件路径或文件名字有错,使得xlsModelBook 找不到文件,值未nothing
或许有些Office组件没注册。
自己测试一下
参考资料:http://blog.csdn.net/iqhw/article/details/478125
本回答被提问者采纳 第5个回答 2012-07-10 路径设置的问题。不同的电脑,对应的路径是不一样的。VBS 操作Excel
VBS操作Excel
-
打开excel
Dim objExcel,objWorkbook,objSheet
Set objExcel=CreateObject("excel.application")
Set objBook=objExcel.Workbooks.Open("\MGPCTFSW01UserFolders$ 165050DesktopPortal_Smoke_AutomationTest DataBook1.xlsx")
-
读取Excel
a.
Set objSheet=objbook.Sheets("sheet1")
msgbox objSheet.cells(2,2)
Set objBook=Nothing
Set objSheet=Nothing
objExcel.Quit
b.
Set objSheet=objbook.Sheets(SheetName)
Set objRange = objSheet.UsedRange
objRow = objRange.Find(RowName).Row
objColumn = objRange.Find(ColumnName).Column
objValue = objSheet.Cells(objRow,objColumn)
以上是关于Excel 关于 Workbooks.Open 打开赋值的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何用Workbooks.Open打开Excel工作簿,如何操作?
尝试使用Microsoft.Office.Interop.Excel.Workbooks.Open()打开Excel时出现异常HResult 0x800a03ec