我做一个数据录入的问题想excel嵌入到 vb的 form 中

解决方案 »

  1.   

    Private Sub Cmdopen_Click()
      HScroll1.Value = 0
      VScroll1.Value = 0
      With OLE1
       .CreateLink (App.Path & "\属性录入.xls")
         HScroll1.Max = .Width - Picture1.Width + 20
         HScroll1.LargeChange = .Width / 10
         HScroll1.SmallChange = .Width / 20
         VScroll1.Max = .Height - Picture1.Height + 20
         VScroll1.LargeChange = .Height / 10
         VScroll1.SmallChange = .Height / 20
          
      End WithEnd Sub
      

  2.   

    我用CreateLink他连接以后是不可编辑的
    来给帮助就给分
      

  3.   

    OLE嵌套就行了,在工具栏上拖一个"OLE"控件到窗口上
      

  4.   

    但是我用了ole连接以后是不能编辑的这个问题是怎么回事啊
      

  5.   

    拖一个OLE就可以了,选新建->Microsoft Excel工作表,窗体运行时,点右键“编辑”
      

  6.   

    直接调用excel也应该能满足你的要求吧。
      代码:
       Dim exl As Object
       Dim mybook As Object
       Dim mysheet As Object
       Set exl = CreateObject("excel.application")
       Set mybook = exl.workbooks.Add
       Set mysheet = exl.worksheets.Add
       然后选择表名称
       在excel环境下添加
      

  7.   

    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 Long
    Private mlngXLHwnd As Long
    Private WithEvents mobjXL As Excel.Applicationsub add_a_excelmobjXL.Caption = "10001"
    mlngXLHwnd = FindWindow("XLMAIN", "10001")SetParent mlngXLHwnd, Me.PicSstab(3).hwnd '你需要把excel放在地方的句柄Dim c As ObjectFor Each c In mobjXL.CommandBars
        'c.Visible = True
        c.Enabled = True
    NextExcel_window mlngXLHwnd
    mobjXL.Workbooks.Add
    mobjXL.Sheets("sheet1").name = "Temp"
    mobjXL.Sheets("sheet2").Delete
    mobjXL.Sheets("sheet3").Deleteend sub
      

  8.   

    Sub Excel_window(mlngXLHwnd As Long)
        
        Dim lngStyle As Long
        Dim lngStatusBar As Long    
        lngStyle = GetWindowLong(mlngXLHwnd, GWL_STYLE)
        
        lngStyle = lngStyle Xor WS_CAPTION
        lngStyle = lngStyle Xor WS_SIZEBOX
        
        SetWindowLong mlngXLHwnd, GWL_STYLE, lngStyle
        MoveWindow mlngXLHwnd, 0, 0, (PicSstab(3).Width / Screen.TwipsPerPixelX) + 3, (PicSstab(3).Height / Screen.TwipsPerPixelY) + 3, 1End Sub
      

  9.   

    也是copy以前别人的东西 .不过他是用在mdi字窗体上的.
      

  10.   

    如果不用OLE,用以下代码也可以:
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    '引用Microsof Excel X.0 Object Library
    Private Sub Cmdopen_Click()
        Dim exlHwnd As Long
        Dim exl As Object
        Dim mybook As Object
        Set exl = CreateObject("excel.application")
        Set mybook = exl.workbooks.Open(App.Path & "\属性录入.xls")
        exl.Visible = True
        exlHwnd = FindWindow(vbNullString, "Microsoft Excel - 属性录入.xls")
        Call SetParent(exlHwnd, Me.hwnd)
        Set exl = Nothing
        Set mybook = Nothing
    End Sub