通过【部件】-【可插入对象】-Excel工作表可以得到一个“Sheet”控件,估计是个OLE控件吧,在对话框中画出一个实体即可以得到一个默认的Sheet1,运行时双击它即进入Excel界面,可以像在Excel中操作它。我想在我的程序中把它作为一种显示手段,即要在我自己的程序中获取它的有效对象,如Excel.Application、Excel.WorkBook、Excel.Sheet等,从而指定它显示和操作我指定的Excel文件。可是它的属性和方法很有限,而且Sheet1.Object一直没有初始化。
求教该怎么做?-----------------------------------
为什么我要这样做:由于我的表中有一些格式如合并单元格、带公式的单元格等,在MSFlexGrid中没有正确显示,而且对于客户来说只要求能够看见该Excel文件的内容而已,所以我认为使用上面的设计应该最简单。到这里还有100分:
http://expert.csdn.net/Expert/topic/3045/3045998.xml?temp=.3426935
求教该怎么做?-----------------------------------
为什么我要这样做:由于我的表中有一些格式如合并单元格、带公式的单元格等,在MSFlexGrid中没有正确显示,而且对于客户来说只要求能够看见该Excel文件的内容而已,所以我认为使用上面的设计应该最简单。到这里还有100分:
http://expert.csdn.net/Expert/topic/3045/3045998.xml?temp=.3426935
Private Const GWL_STYLE = (-16)
Private Const WS_DLGFRAME = &H400000
Private Const WS_CHILD = &H40000000
Private Const WS_CHILDWINDOW = (WS_CHILD)
Private Const WS_VSCROLL = &H200000
Private Const WS_CAPTION = &HC00000
Private Const WS_BORDER = &H800000
Private Const WS_THICKFRAME = &H40000
Private Const WS_SIZEBOX = WS_THICKFRAMEPrivate Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePrivate Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function SetParent Lib "user32" _
(ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private 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
Private 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
Private Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" _
(ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As LongPrivate WithEvents mobjXL As Excel.Application
Private mlngXLHwnd As Long
Dim WithEvents Label1 As Label
Dim WithEvents Picture1 As PictureBox
Private Sub MDIform_Load()
Dim lngStyle As Long
Dim c As Object
Dim lngStatusBar As Long
Dim xl As Excel.Worksheet
Set Picture1 = MDIForm1.Controls.Add("VB.PictureBox", "Picture1")
Picture1.Visible = True
Picture1.Align = 1
Picture1.Height = 2
Set mobjXL = New Excel.Application
mobjXL.Caption = "10001"
mobjXL.Visible = True For Each c In mobjXL.CommandBars
c.Enabled = False
Next
mlngXLHwnd = FindWindow("XLMAIN", "10001")
SetParent mlngXLHwnd, Me.hwnd
lngStyle = GetWindowLong(mlngXLHwnd, GWL_STYLE)
lngStyle = lngStyle Xor WS_CAPTION
lngStyle = lngStyle Xor WS_SIZEBOX
SetWindowLong mlngXLHwnd, GWL_STYLE, lngStyle
MoveWindow mlngXLHwnd, 0, 0, _
(Me.ScaleWidth / Screen.TwipsPerPixelX), _
(Me.ScaleHeight / Screen.TwipsPerPixelY), 1
mobjXL.Workbooks.Add With mobjXL.Application
.SheetsInNewWorkbook = 1
.DisplayFormulaBar = False
.DisplayStatusBar = False
End With
End SubPrivate Sub MDIform_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim c As Object
SetParent mlngXLHwnd, 0
DoEvents
mobjXL.Visible = False
For Each c In mobjXL.CommandBars
c.Enabled = False
Next
mobjXL.Application.SheetsInNewWorkbook = 3
With Application
.DisplayFormulaBar = True
.DisplayStatusBar = True
End With
mobjXL.ActiveWindow.DisplayHeadings = True
mobjXL.Quit
Set mobjXL = Nothing
End Sub
Private Sub MDIform_Resize()
If Not Me.WindowState = vbMinimized Then
MoveWindow mlngXLHwnd, 0, _
(Picture1.Height / Screen.TwipsPerPixelY), _
(Me.ScaleWidth / Screen.TwipsPerPixelX), _
(Me.ScaleHeight / Screen.TwipsPerPixelY), 1
End If
End SubPrivate Sub mobjXL_WindowResize(ByVal Wb As Excel.Workbook, ByVal Wn As Excel.Window)
MoveWindow mlngXLHwnd, 0, 0, _
(Me.ScaleWidth / Screen.TwipsPerPixelX), _
(Me.ScaleHeight / Screen.TwipsPerPixelY), 1
End Sub
你不能编程的,
要编程,用以下方法,
引用EXCEL库,
定义EXCEL对象,
dim objExcel as new excel.application
这时就可以用objExcel点、点属性出来了