Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]从多个EXCEL文件中导入到ACCESS中一个表并改文件名

悍将  发表于:2009-03-27 11:44:35  
复制

这是竹笛老师帮做的一个例子,能不能修改加一句,对话框的提示,说明已有几个文件被导入,谢谢了。点击下载此附件

 

Top
竹笛 发表于:2009-03-27 15:12:03

改一下代码(红色部分):

Private Sub cmdIn_Click()
    Dim strFileName As String   '获取的文件名及完整路径
    Dim strPath As String    '路径
    Dim I As Integer    '循环变量

  dim n as long
    Dim Arr                     '申明数组

    On Error Resume Next
    '****************************************************
    '获取文件名及完整路径
    strFileName = GetFileName("Open", "*.xls", "xls")

    '****************************************************
    '分割并寄入数组
    Arr = Split(strFileName, Chr(0))

    '****************************************************
    '因为多选后在有时会有"\",有时又没有"\" _
     因此通过此判断补齐 "\"
    If Right(Arr(0), 1) <> "\" Then
        strPath = Arr(0) & "\"
    Else
        strPath = Arr(0)
    End If

    '****************************************************
    '输出含文件名的多选或是单选的完整路径
    ' List1.RowSource = ""                  '清空列表框数据
    Me.frmChild.SourceObject = ""
    If UBound(Arr) >= 4 Then
        For I = 1 To UBound(Arr) - 3
            DoCmd.TransferSpreadsheet acImport, 8, "tblList", strPath & Arr(I), True, ""
            n = Len(strPath & Arr(I)) - 4
            Name strPath & Arr(I) As Left(strPath & Arr(I), n) & "已导入.xls"

        Next
    Else
        DoCmd.TransferSpreadsheet acImport, 8, "tblList", strFileName, True, ""
        n = Len(strFileName) - 4

        Name strPath & Arr(I) As Left(strFileName, n) & "已导入.xls"

    End If
    Me.frmChild.SourceObject = "frmList"
End Sub



捉猫鼠 发表于:2009-03-27 16:24:14
竹笛老师,我想的是导入了5个表,对话框就弹出提示“已导入5个表”,是这样的结果。谢谢。

竹笛 发表于:2009-03-27 17:26:31

Private Sub cmdIn_Click()
    Dim strFileName As String   '获取的文件名及完整路径
    Dim strPath As String    '路径
    Dim I As Integer    '循环变量
    Dim Arr                     '申明数组
    Dim IsIn As Boolean

    On Error Resume Next
    '****************************************************
    '获取文件名及完整路径
    strFileName = GetFileName("Open", "*.xls", "xls")

    '****************************************************
    '分割并寄入数组
    Arr = Split(strFileName, Chr(0))
    IsIn = False
    '****************************************************
    '因为多选后在有时会有"\",有时又没有"\" _
     因此通过此判断补齐 "\"
    If Right(Arr(0), 1) <> "\" Then
        strPath = Arr(0) & "\"
    Else
        strPath = Arr(0)
    End If

    '****************************************************
    '输出含文件名的多选或是单选的完整路径
    ' List1.RowSource = ""                  '清空列表框数据
    Me.frmChild.SourceObject = ""
    If UBound(Arr) >= 4 Then
        For I = 1 To UBound(Arr) - 3
            DoCmd.TransferSpreadsheet acImport, 8, "tblList", strPath & Arr(I), True, ""

        Next
        IsIn = True
    Else
        DoCmd.TransferSpreadsheet acImport, 8, "tblList", strFileName, True, ""
    End If
    Me.frmChild.SourceObject = "frmList"
    If IsIn = True Then
        IsIn = False
        MsgBox "您导入了" & I - 1 & "个Excel表", vbInformation, "提示"
    End If
End Sub



捉猫鼠 发表于:2009-03-28 12:40:11

有两个小问题:1、当选择一个文件导入后,该文件没被重命名“已导入”。

              2、多次循环导入,弹出的对话框显示表格数目不对。



竹笛 发表于:2009-03-29 10:39:01

1.结合上面的代码,自行实现文件重命名“已导入”,代码我已提供。

2.只能实现一次.循环无法计数.



捉猫鼠 发表于:2009-03-29 11:36:52
竹笛老师 我的意思是,多选可以重命名,但是只选择一个,不能重命名。

捉猫鼠 发表于:2009-04-02 22:34:07
竹笛老师已帮解决,谢谢。

总记录:7篇  页次:1/1 9 1 :