如何使用VB将Excel数据追加到指定的Access数据库中指定表中
1个回答
展开全部
最近正好在做和你差不多的事
先在Module1中打入
Option Explicit
Public xlapp As Object 'Excel对象
Public xlbook As Object '工作簿
Public xlsheet As Object '工作表
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
然后新窗体中打入
Dim f As Integer
Sub GetExcel()
Dim MyXL As Object '用于存放Microsoft Excel 引用的变量。
Dim ExcelWasNotRunning As Boolean '用于最后释放的标记。
On Error Resume Next '延迟错误捕获。
'不带第一个参数调用Getobject函数将返回对该应用程序的实例的引用。
'如果该应用程序不在运行,则会产生错误。
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear '如果发生错误则要清除 Err 对象。
'检测 Microsoft Excel。如果 Microsoft Excel 在运行,则将其加入运行对象表。
DetectExcel '该过程检测并登记正在运行的 Excel
'设置其 Application 属性,显示 Microsoft Excel。
'然后使用 MyXL 对象引用的 Windows 集合,显示包含该文件的实际窗口。
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
'如果在启动时,Microsoft Excel 的这份副本不在运行中,
'则使用 Application 属性的 Quit 方法来关闭它。
'注意,当试图退出 Microsoft Excel 时,
'标题栏会闪烁,并显示一条消息询问是否保存所加载的文件。
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End If
Set MyXL = Nothing '释放对该应用程序和电子数据表的引用。
End Sub
'该过程检测并登记正在运行的 Excel。
Sub DetectExcel()
Const WM_USER = 1024
Dim hwnd As Long
'如果 Excel 在运行,则该 API 调用将返回其句柄。
hwnd = FindWindow("XLMAIN", 0)
If hwnd = 0 Then '0 表示没有 Excel 在运行。
Exit Sub
Else
'Excel 在运行,因此可以使用 SendMessage API'函数将其放入运行对象表。
SendMessage hwnd, WM_USER + 18, 0, 0
End If
End Sub
Private Sub cmdRun_Click()
Dim intLow, intCol As Integer
Call GetExcel
Set xlapp = GetObject(App.Path + "\轮滑社08招新成员.xls") '打开模扳文件
xlapp.Parent.Windows(1).Visible = True '使父窗体可见
Set xlsheet = xlapp.Application.Worksheets(1) '当前工作簿的第一页
Dim s1
s1 = xlsheet.Cells(f, j) '当前工作簿第一页的第I行第J列
End Sub
最后s1那就是从EXCEL的列、行取东东的.你可dim,s1,s2,s3......
数据提取了,你可以用ADO导入.(s1,s2,s3放在已与ADO联接的TEXT上)接下来自己用循环做了,都是别人帮你,没意思了.
既然你这么问,数据库的东东你应该知道的了
先在Module1中打入
Option Explicit
Public xlapp As Object 'Excel对象
Public xlbook As Object '工作簿
Public xlsheet As Object '工作表
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
然后新窗体中打入
Dim f As Integer
Sub GetExcel()
Dim MyXL As Object '用于存放Microsoft Excel 引用的变量。
Dim ExcelWasNotRunning As Boolean '用于最后释放的标记。
On Error Resume Next '延迟错误捕获。
'不带第一个参数调用Getobject函数将返回对该应用程序的实例的引用。
'如果该应用程序不在运行,则会产生错误。
Set MyXL = GetObject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear '如果发生错误则要清除 Err 对象。
'检测 Microsoft Excel。如果 Microsoft Excel 在运行,则将其加入运行对象表。
DetectExcel '该过程检测并登记正在运行的 Excel
'设置其 Application 属性,显示 Microsoft Excel。
'然后使用 MyXL 对象引用的 Windows 集合,显示包含该文件的实际窗口。
MyXL.Application.Visible = True
MyXL.Parent.Windows(1).Visible = True
'如果在启动时,Microsoft Excel 的这份副本不在运行中,
'则使用 Application 属性的 Quit 方法来关闭它。
'注意,当试图退出 Microsoft Excel 时,
'标题栏会闪烁,并显示一条消息询问是否保存所加载的文件。
If ExcelWasNotRunning = True Then
MyXL.Application.Quit
End If
Set MyXL = Nothing '释放对该应用程序和电子数据表的引用。
End Sub
'该过程检测并登记正在运行的 Excel。
Sub DetectExcel()
Const WM_USER = 1024
Dim hwnd As Long
'如果 Excel 在运行,则该 API 调用将返回其句柄。
hwnd = FindWindow("XLMAIN", 0)
If hwnd = 0 Then '0 表示没有 Excel 在运行。
Exit Sub
Else
'Excel 在运行,因此可以使用 SendMessage API'函数将其放入运行对象表。
SendMessage hwnd, WM_USER + 18, 0, 0
End If
End Sub
Private Sub cmdRun_Click()
Dim intLow, intCol As Integer
Call GetExcel
Set xlapp = GetObject(App.Path + "\轮滑社08招新成员.xls") '打开模扳文件
xlapp.Parent.Windows(1).Visible = True '使父窗体可见
Set xlsheet = xlapp.Application.Worksheets(1) '当前工作簿的第一页
Dim s1
s1 = xlsheet.Cells(f, j) '当前工作簿第一页的第I行第J列
End Sub
最后s1那就是从EXCEL的列、行取东东的.你可dim,s1,s2,s3......
数据提取了,你可以用ADO导入.(s1,s2,s3放在已与ADO联接的TEXT上)接下来自己用循环做了,都是别人帮你,没意思了.
既然你这么问,数据库的东东你应该知道的了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询