ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2649|回复: 1

[求助] 大师请进:用VBA如何从工作薄文件导入到工作表(发贴几天了,无人问津)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-8-24 07:39 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位大师:
     您好!请帮忙修改代码,用VBA实现:   
   怎样从指定的工作薄文件中将有数据的区域复制过来,以此为例,要从“备份2010.8.24”中“表二”的E4:P复制到本工作薄“凭证登记”的“表二”中的E4:P里来,假设两个文件不在同一目录下,浏览文件夹选择文件再复制导入。
   “备份2010.8.24”工作表保护密码为:81452,工作薄保护密码为:12345。

[ 本帖最后由 ugyun 于 2010-8-26 18:43 编辑 ]

凭证登记.rar

27.1 KB, 下载次数: 30

备份2010-08-24.part1.rar

244.14 KB, 下载次数: 17

备份2010-08-24.part2.rar

183.66 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-24 09:28 | 显示全部楼层
各位老师,各位大师:
  对上面的“凭证登记”,我只起了个头:  
Private Sub CommandButton1_Click() '导入
    Dim wkbk As Workbook '定义一个工作薄
    Dim MyFileName As String '定义要读取的文件路径
     MyFileName = Application.GetOpenFilename(filefilter:="Microsoft Office Excel 工作薄 (*.xls),*.xls,Excel97~2003 (*.xls), *.xls,Excel2007 (*.xlsx), *.xlsx,所有文件(*.*),*.*", Title:="请选择要导入的文件")
       If MyFileName = False Then Exit Sub
       这里都不知道怎么写下去了……
End Sub



现在我找到一个范例:
Public Sub 按钮1_单击()
    Dim DbPath As String, sName As String
    Dim Filename As Variant                      '预先无法知道此数组大小,因预先无法知道要打开的文件数
    Dim intTblCnt As Integer
    Dim strTbl As String, a() As String
    Dim intColCnt As Integer
    Dim t As Integer, c As Integer, f As Integer, Count As Integer
    Dim Sql As String

    intColCnt = Cells(1, 256).End(xlToLeft).Column
    ReDim a(intColCnt + 2)
      
    Filename = Application.GetOpenFilename("Microsoft Office Excel Files (*.xls), *.xls", , "请选取文件", , MultiSelect:=True)
    If Not IsArray(Filename) Then Exit Sub
   
    For Each fn In Filename                     '在整个选择的范围内循环
        'Application.ScreenUpdating = False
        sName = Application.WorksheetFunction.Substitute(fn, ThisWorkbook.Path & "\", "")
        Workbooks.Open fn              '打开文件以检查是否存在需要的字段名
        Set cn = New ADODB.Connection
        With cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=" & fn & ";Extended Properties=Excel 8.0;"
            .CursorLocation = adUseClient
            .Open
        End With
        intTblCnt = ActiveWorkbook.Sheets.Count
        For t = 1 To intTblCnt
            Count = 0
            ActiveWorkbook.Sheets(t).Select
            Sql = ""
            intFldsCnt = ActiveWorkbook.Sheets(t).Cells(1, 256).End(xlToLeft).Column
            strTbl = ActiveWorkbook.Sheets(t).Name
            For c = 1 To intColCnt
                sign = 0
                a(c) = ThisWorkbook.Sheets(1).Cells(1, c).Value
                a(c + 1) = ThisWorkbook.Sheets(1).Cells(1, c + 1).Value
                For f = 1 To intFldsCnt
                    With ActiveWorkbook.Sheets(t)
                        If Cells(1, f) = a(c) Then
                            sign = 1
                            Sql = Sql & a(c) & ","
                        End If
                    End With
                Next
                If sign = 0 Then
                    Count = Count + 1
                    Sql = Sql & a(c + 1) & ","
                End If
            Next
            Sql = Left(Sql, Len(Sql) - 1)
            If Len(Sql) = 0 Or Count = intColCnt Then
                GoTo Label1
            End If
            Sql = "Select " & Sql & " FROM [" & strTbl & "$] "
            ThisWorkbook.Sheets(1).Cells(65535, 1).End(xlUp).Offset(1, 0).CopyFromRecordset cn.Execute(Sql)
Label1:
        Next                                '对文件中的表遍历
        cn.Close
        Workbooks(sName).Close False
    Next                                    '文件遍历
    Set cn = Nothing
    Application.ScreenUpdating = True
End Sub





以上是附件“通用多文件条件汇总-ADO应用”中的代码,但我看不懂,烦请老师根据这个范例对上面的“凭证登记”进行修改。谢谢了。

[ 本帖最后由 ugyun 于 2010-8-25 19:12 编辑 ]

通用多文件条件汇总-ADO应用.rar

123.48 KB, 下载次数: 134

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 09:39 , Processed in 0.036970 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表