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 。

参考技术A Dim strOpenFile,strSaveFile as String
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

  1. 打开excel

    Dim objExcel,objWorkbook,objSheet

    Set objExcel=CreateObject("excel.application")

    Set objBook=objExcel.Workbooks.Open("\MGPCTFSW01UserFolders$ 165050DesktopPortal_Smoke_AutomationTest DataBook1.xlsx")

  2. 读取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

powerdesigner怎么导出到excel 博客园

vb.net获取excel页面高度

VBS 操作Excel

打开和写入excel文件