如何vb使用excel的worksheet

NewQger 2007-03-21 02:37:54
我想用vb中excel的worksheet输出打印 报表.报表格式从xls文件中读入,输入填充后再打印,不需要用户填写修改单元格内容,我想直接用 worksheet 部件,可不可以呢?怎么用,关键是怎么读入excel文件显示,打印控制. 我不想直接启动excel.application.

谢谢.
...全文
1871 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewQger 2007-03-28
  • 打赏
  • 举报
回复
to:
那你的问题解决了吗?
到时候教教我怎么用可插入的对象excel来打印哦

这种用法不是可插入对象吧.还是用的excel.application 只不过将excel的父窗体设成我用vb做的窗体. 打印还是excel的打印操作.. 功能是实现了,但是 问题很多.虽然是放到了窗体frmreport里.vb窗体与excel窗体 不是很协调,毕竟是寄生关系.比如焦点的问题.还有窗体会花.用refresh也没用.
NewQger 2007-03-28
  • 打赏
  • 举报
回复
回:
你说的是OLE对象吧!你能不能用excel.application完成之后再用OLE 插入对象连接后显示出来呢?

应该是吧,我没用过可插入对象ole...
我本来想用的 部件里的 可插入对象 里的 excel工作表.不知道怎么用, 你说的"连接"能具体点说一下吗. 谢谢.
datou985 2007-03-23
  • 打赏
  • 举报
回复
那就不懂了
没用过什么可插入对象

不好意思了
帮不了你

顺便等高人解答
长长见识~~~~~~~~~~~
NewQger 2007-03-23
  • 打赏
  • 举报
回复
我说的不是用excel.application ,用这个就意味着直接启动了外部程序excel了,即使不显示,我的要求是要显示.
我想知道的是 "可插入对象" 里的 excel工作表 怎么使用.
yanhuaju9 2007-03-23
  • 打赏
  • 举报
回复
我给你发过去了,你帮我看看吧,谢谢了哈
quester 2007-03-23
  • 打赏
  • 举报
回复
你说的是OLE对象吧!你能不能用excel.application完成之后再用OLE 插入对象连接后显示出来呢?
datou985 2007-03-23
  • 打赏
  • 举报
回复
发一份你的代码(和可插入对象相关的一段即可)到我的邮箱
datou985@163.com
datou985 2007-03-23
  • 打赏
  • 举报
回复
那你的问题解决了吗?
到时候教教我怎么用可插入的对象excel来打印哦
NewQger 2007-03-23
  • 打赏
  • 举报
回复
呵呵,不用打印窗体,还是打印excel打开的worksheet,之前添上统计的数据.非常感谢你啊楼上.
datou985 2007-03-23
  • 打赏
  • 举报
回复
呵呵,明白了
这样的话
你可以打印窗体啊
NewQger 2007-03-23
  • 打赏
  • 举报
回复
希望 有经验的人能再谈谈 这方面应用的问题及好的方法... 谢谢各位了.
NewQger 2007-03-23
  • 打赏
  • 举报
回复
回 yanhuaju9()
我用这种方法将报表显示在我的vb窗体里了.但是还是启动了excel应用.记得关掉窗体时要关闭并卸载excel
代码如下: frmReport 是我的窗体.
Public Const GWL_STYLE = (-16)
Public Const WS_DLGFRAME = &H400000
Public Const WS_CHILD = &H40000000
Public Const WS_CHILDWINDOW = (WS_CHILD)
Public Const WS_VSCROLL = &H200000
Public Const WS_CAPTION = &HC00000
Public Const WS_BORDER = &H800000
Public Const WS_THICKFRAME = &H40000
Public Const WS_SIZEBOX = WS_THICKFRAME

Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

Public Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long

Public Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long

Public Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long

Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Declare Function MoveWindow Lib "user32" _
(ByVal hwnd As Long, _
ByVal x As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long

Public Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal x As Long, ByVal Y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long

Public Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
' WithEvents
Public mobjXL As Excel.Application
Public mlngXLHwnd As Long

'*****************显示Excel******************
Public Sub LoadExcel(ByVal aTitle As String)
Dim lngStyle As Long
Dim c As Object
Dim lngStatusBar As Long
On Error Resume Next

Set mobjXL = New Excel.Application
If Err.Number > 0 Then
MsgBox "本机未安装 MS Excel 。", vbOKOnly + vbCritical, "载入 Excel 失败"
Exit Sub
End If

mobjXL.Caption = aTitle

mobjXL.Visible = True
mobjXL.DisplayFormulaBar = False
mobjXL.DisplayStatusBar = True
' mobjXL.DisplayExcel4Menus = False '此语句不显示Excel菜单

For Each c In mobjXL.CommandBars
c.Enabled = False
Next

mlngXLHwnd = FindWindow("XLMAIN", aTitle)
SetParent mlngXLHwnd, frmReport.hwnd

lngStyle = GetWindowLong(mlngXLHwnd, GWL_STYLE)

lngStyle = lngStyle Xor WS_CAPTION
lngStyle = lngStyle Xor WS_SIZEBOX

SetWindowLong mlngXLHwnd, GWL_STYLE, lngStyle
'Picture1.Visible = True
MoveWindow mlngXLHwnd, 0, (300 / Screen.TwipsPerPixelY), _
(frmReport.ScaleWidth / Screen.TwipsPerPixelX), _
(frmReport.ScaleHeight / Screen.TwipsPerPixelY), 1
mobjXL.Workbooks.Open ("D:\work\gz\2006gzgg\report\JGGZ001.xls")
' mobjXL.Workbooks.Add
'ExportToExcel aSQL, mobjXL, aTitle
End Sub
lailuboy 2007-03-23
  • 打赏
  • 举报
回复
你的意思应该是在程序界面里嵌入Excel吧?
NewQger 2007-03-22
  • 打赏
  • 举报
回复
谢谢了楼上,我的意思是不启动 excel 应用,还要显示给用户看. 我的报表格式有了,比较复杂用data report做很麻烦. 我想的是读入 excel文件即报表格式,再统计填充数据后 显示给用户,再打印. 关键是想不用启动excel 还能显示给用户看到报表样式和数据.
datou985 2007-03-22
  • 打赏
  • 举报
回复
刚才给你发的那个文件里面有关于workbook和worksheet的printout的用法
你自己看看吧,希望对你有帮助
datou985 2007-03-22
  • 打赏
  • 举报
回复
不明白你的“读入excel文件显示打印控制”是什么意思

你是想把excel程序显示出来,还是完全后台操作?

想用vb程序控制通过选定现有的excel报表文件,实现该文件的打印功能?(比如按一个打印按钮,然后用fileopendialog找报表文件,找到后就从打印机里打印出来??)不是很明白你的意思
NewQger 2007-03-22
  • 打赏
  • 举报
回复
ningwh@163.com 谢谢.
datou985 2007-03-22
  • 打赏
  • 举报
回复
把你的邮箱留下,我发个关于excel对象模型的说明给你,你看了就知道怎么做了
yanhuaju9 2007-03-22
  • 打赏
  • 举报
回复
这个问题也是我想知道的,能不能也给我发封邮件阿?
yang0906@163.com
谢谢了
datou985 2007-03-22
  • 打赏
  • 举报
回复
引用那里添加Excel 11.0的库,然后就可以在代码中引用EXCEL对象模型啦
所有跟excel相关的操作都可以进行的
你可以把excelapplication的visible属性设成false(默认也是false)
在整个程序运行期间就不会显示出excel界面来
然后用一个事件激发excel的printout方法就可以了
加载更多回复(6)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧