注册 登录
编程论坛 VB6论坛

VB操控EXCEL总是报错,求指点~

xingming022 发布于 2018-02-26 17:31, 3185 次点击
Private Sub Command6_Click()
    Set xlApp = CreateObject("excel.application")
    Set xlbook = xlApp.ActiveWorkbook     
    Set xlsheetA = xlbook.Worksheets(1)
    Set xlsheetB = xlbook.Worksheets(2)
End sub
我就是想对一个已经打开的EXCEL进行操作,不知怎么编写代码~

[此贴子已经被作者于2018-2-27 09:40编辑过]

10 回复
#2
HVB62018-02-26 20:16
回复 楼主 xingming022
您的代码是新建立一工作簿,而一般新建立工作簿是3个工作表,所以
红色的代码报错:
Private Sub Command6_Click()
    Set xlApp = CreateObject("excel.application")
    Set xlbook = xlApp.ActiveWorkbook     
    Set xlsheetA = xlbook.Worksheets(7)
    Set xlsheetB = xlbook.Worksheets(8)

End sub
#3
start19012018-02-26 22:48
回复 楼主 xingming022
确定你有8个sheet么?估计是没有
#4
xingming0222018-02-27 08:54
回复 2楼 HVB6
我就是想对一个已经打开的EXCEL进行操作,不知怎么编写代码~
#5
HVB62018-02-27 10:37
回复 4楼 xingming022
vb操作工作簿应该是关闭的,这样试试:
Private Sub Command6_Click()
    Set xlApp = CreateObject("excel.application")
    Set xlbook =   xlApp.Workbooks.Open(mypath)
    Set xlsheetA = xlbook.Worksheets(7)
    Set xlsheetB = xlbook.Worksheets(8)
End sub
mypath为您要操作的工作簿路径和其文件名。

[此贴子已经被作者于2018-2-27 10:40编辑过]

#6
xingming0222018-02-27 11:33
回复 5楼 HVB6
我想对当前任意打开的EXCEL进行操作。而不是指定位置的EXCEL。麻烦您再看下~
#7
wds12018-02-27 12:58
1、通过xlbook.Worksheets.Count取得sheet数
2、之后通过for循环对全部sheet进行操作。


#8
wlrjgzs2018-02-27 14:30
#9
wds12018-02-27 16:56
如果你想用VB创建execl,以下供参考
   Dim NewXls As Excel.Application
   Dim NewBook As Excel.Workbook
   Dim NewSheet As Excel.Worksheet
   
   Set NewXls = CreateObject("Excel.Application") '创建excel应用程序
   NewXls.SheetsInNewWorkbook = 4 '建立4个sheet,可以修改
   Set NewBook = NewXls.Workbooks.Add '创建工作簿
   Set NewSheet = NewBook.Worksheets(2) '选择sheet2
   '自己编写sheet2的单元格的赋值或者属性操作
   Set NewSheet = NewBook.Worksheets(1) '选择sheet1
    NewXls.Workbooks(1).Worksheets(1).Range("a1:g11").Borders.Weight = xlThin '设置边框
   NewXls.Workbooks(1).Worksheets(1).Range("a1:g11").HorizontalAlignment = 3 '设置居中
    NewXls.Workbooks(1).Worksheets(1).Range("a1:g11").ColumnWidth = 10 '设置列宽
    '其他的自己编写sheet1的单元格的赋值或者属性操作

 
#10
xiangyue05102018-02-27 16:58
回复 楼主 xingming022
估计是你的表格中没有3张表(删除了)
如果只是对当前表进行操作,直接用activesheet
要不就按照wds1进行遍历,选择对应的表操作
#11
xingming0222018-02-28 08:35
感谢各位,我找到答案了,对已经打开的EXCEL操作用,GetObject(, "excel.application")。而不是CreateObject("excel.application")。
1