请问怎么用vb6操作已经打开的excel表格文件

Private Sub Command2_Click()
Dim xlApp As Excel.Application '定义EXCEL对象变量Dim xlBook As Excel.WorkbookDim xlSheet As Excel.Worksheet
Set xlApp = GetObject(, "Excel.Application")
Set xlBook = xlApp.Workbooks.open("c:\1.xls") '这个地方总是提示已经打开Set xlSheet = xlBook.Worksheets(1)xlSheet.Cells(1, 2) = "11111"
End Sub

第1个回答  2013-02-01
一、检查是否你已经手动打开了c:\1.xls文件?
Set xlBook = xlApp.Workbooks.open("c:\1.xls") 语句的意思是打开c:\1.xls文件,因此,
对于已经打开的c:\1.xls文件,不能执行 Set xlBook = xlApp.Workbooks.open("c:\1.xls") 语句。
二、在每次执行完xlApp对象,需要关闭它才可以再次用代码打开。
如果不关闭代码打开的对象,也会像上面说的那样,出现已经打开文件的错误提示。
在你的事例中,Set xlSheet = xlBook.Worksheets(1)xlSheet.Cells(1, 2) = "11111" 是最后一句
处理 excel 工作表的语句,因此应把关闭对象代码放到这句后面。即:
Private Sub Command2_Click()
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
'Set xlApp = GetObject(, "Excel.Application")
Set xlBook = xlApp.Workbooks.open("c:\1.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(1, 2) = "11111"
xlBook.Save
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub追问

你没有明白我的意思,比如我有1.xls文件,并且我通过判断知道这个文件已经打开,接下来根据Set xlApp = GetObject(, "Excel.Application")获取到已经打开的xlapp对象,我的问题是如何获取1.xls的xlBook对象呢?现在我的问题自己解决了,只需要Set xlBook = xlApp.Workbooks(“1.xls”)就可以了,这样就能实现对已经打开的表格直接操作的目的了!不管怎么样,谢谢您的回答!

追答

嗯~~不好意思。。的确没弄明白。。
如果是这个要求,没必要那么多代码,全部代码只用下面两行就可以了:
Windows("1").Activate ' 文件1.xls获得焦点
Sheets(1).Cells(1, 2) = "11111" ' 向第一张工作表的B1单元格写入数据

本回答被提问者采纳
相似回答