也就是被调用的Excel窗体做为Access的子窗体了,最大化后仍然包含在Access程序窗体范围内,用到 API 函数能实现吗?非常期待得到解决办法,

解决方案 »

  1.   

    最简单的方法是将Excel转换为Access文件,然后用Access打开。
      

  2.   

    按你的要求:'请先将Access文件和Excel文件打开
    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) 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 Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As LongPrivate Sub btnSetExcelInAccess_Click()
        Dim lngExcelHwnd As Long
        Dim lngAccessHwnd As Long
        Dim lngP As Long
        Dim strExcelName As String
        Dim strAccessName As String    strExcelName = "Microsoft Excel - 11.xls"               'Excel文件的名字(左上角显示的名字)
        strAccessName = "Microsoft Access"                      'Access文件的名字(左上角显示的名字)
        
        lngExcelHwnd = FindWindow(vbNullString, strExcelName)   '查找Excel文件的句柄
        lngAccessHwnd = FindWindow(vbNullString, strAccessName) '查找Access文件的句柄
        lngP = SetParent(lngExcelHwnd, lngAccessHwnd)           '将Excel设置为Access的子窗体
    End Sub
      

  3.   

    我是个初学者,二楼的不要笑话我呀,我试试 Veron_04 在三楼的做法,转换为 ACCess 文件不行的,因为我要在 EXCEL 表格中直接输入公式就能得到结果,在 Access 里做不到,我先试一下,谢谢,有问题我再来请教!
      

  4.   


    我得在 Access VBA 代码里新建一个 Excel 对象,并保存一个文件名称,然后再用您的方法执行是吧
      

  5.   

    我不是这样的,我是手动生成一个Excel文件,一个Access文件,然后试验而已。反正思想就是这样了,至于你怎么生成文件,那是你的事情了。
      

  6.   

    能不能把您做的例子给我发过来,我参考一下呢,我刚接触 API ,很多都不明白,麻烦你啦
      

  7.   

    弄好了,但我还是没有通过     
    strExcelName = "Microsoft Excel - 11.xls"               'Excel文件的名字(左上角显示的名字)
        strAccessName = "Microsoft Access"                      'Access文件的名字(左上角显示的名字)
    这两个函数取得文件句柄,而是通过Access窗体及Excel变量取得的句柄,能实现了,非常感谢!!!