按你的要求:'请先将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
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
我得在 Access VBA 代码里新建一个 Excel 对象,并保存一个文件名称,然后再用您的方法执行是吧
strExcelName = "Microsoft Excel - 11.xls" 'Excel文件的名字(左上角显示的名字)
strAccessName = "Microsoft Access" 'Access文件的名字(左上角显示的名字)
这两个函数取得文件句柄,而是通过Access窗体及Excel变量取得的句柄,能实现了,非常感谢!!!