ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] excel数据按列标题导入方法求助用vba代码实现

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-12-31 15:32 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 adud 于 2020-1-1 09:10 编辑

怎么实现点击上面的导入数据按钮,可以打开要导入数据的文件,并能选择要导入的任意列,并导入到对应的列中。比如:我点击上面的“导入数据”,弹出文件选择窗口,我选择了文件夹里面的“原始数据”,里面有好多数据,我想选择某一列或者多列,例如只选择姓名,就只导入姓名的数据到姓名这一列,我也可以选择“姓名”“班级”“考号”等,分别导入对应数据到对应的列中。
本人常用一些公式解决,后来发现vba真的好强大,最近在学习使用vba,遇到问题,解决不了,求助各位。

点击导入数据按钮后,弹出用户选择窗口,选择Excel文件后,跳到userform1,在左侧框中显示原数据表中的对应列,在右侧显示需要导入的数据咧。

导入文件求助.rar

41.53 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2019-12-31 16:50 | 显示全部楼层
本帖最后由 Yalishanda30 于 2019-12-31 16:52 编辑

附件供参考
导入单列,多列你自己练个手

导入文件求助.zip

61.09 KB, 下载次数: 27

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-1 08:55 | 显示全部楼层
效果真不错,谢谢啦。以我的水平,恐怕解决不了这个问题。不过我通过这个可以学到不少东西的。

TA的精华主题

TA的得分主题

发表于 2020-1-1 11:22 | 显示全部楼层
  1. Public sjk As Variant
  2. Sub test()
  3.   Dim r%, i%
  4.   Dim brr
  5.   Dim wb As Workbook
  6.   Dim ws As Worksheet
  7.   Dim mypath$, myname$
  8.   ChDrive Split(ThisWorkbook.Path, "")(0)
  9.   ChDir ThisWorkbook.Path
  10.   myfile = Application.GetOpenFilename(fileFilter:="Excel文件(*.xls*),*.xls*", Title:="选择Excel文件")
  11.   If myfile = False Then
  12.     MsgBox "没有选择文件", vbCritical, "错误"
  13.     Exit Sub
  14.   End If
  15.   Set wb = GetObject(myfile)
  16.   With wb
  17.     With .Worksheets("sheet1")
  18.       r = .Cells(.Rows.Count, 1).End(xlUp).Row
  19.       c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  20.       sjk = .Range("a1").Resize(r, c)
  21.     End With
  22.     .Close False
  23.   End With
  24.   frm_dr.Show
  25. End Sub
  26. Sub daoru(ByVal d_zd As Object)
  27.   Dim r%, i%
  28.   Dim brr
  29.   With Worksheets("理科")
  30.     .UsedRange.Offset(1, 0).ClearContents
  31.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  32.     arr = .Range("a1").Resize(1 + UBound(sjk), c)
  33.     For j = 1 To UBound(arr, 2)
  34.       If d_zd.exists(arr(1, j)) Then
  35.         n = d_zd(arr(1, j))
  36.         For i = 1 To UBound(sjk)
  37.           arr(i + 1, j) = sjk(i, n)
  38.         Next
  39.       End If
  40.     Next
  41.     .Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
  42.   End With
  43. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2020-1-1 11:23 | 显示全部楼层
涉及到窗体的代码都比较繁琐。

导入文件求助.rar

52.95 KB, 下载次数: 31

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-1-1 12:52 | 显示全部楼层
chxw68 发表于 2020-1-1 11:23
涉及到窗体的代码都比较繁琐。

您真棒,虽然和我的那个窗体有差距,其实比我那个还好用,谢谢啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-9-29 10:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本来可以实现基本的导入功能,基本操作是
第一步 、点按钮     


第二步、  选文件


第三步、选工作表


第四步、选数据列
基本可以实现导入所需数据的基本功能。

但功能有以下缺陷:
1、        不能直观显示待导入数据中有几个工作表,更不知道分别是什么数据,选择不够方便
2、        输入序号只能输入一个,不能进行多选,也就是不能同时导入多个数据表的内容。

在网上搜到了一段代码,可以直接显示工作薄中各个工作表的名称,我就想若是能将这个功能加上就完美了。










存在以下困难,自己没法解决,求助各位大师帮忙解决:
1、        右边窗口只能显示当前工作薄的表,没法显示
待导入文件的表。
   2、怎么通过选择表名,将待导入数据导入到当前的数据表中。(可以只选择一个也可以选择多个)

导入数据文件.rar

255.42 KB, 下载次数: 4

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-23 22:01 , Processed in 0.046161 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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