ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA 请求帮助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-20 11:21 | 显示全部楼层 |阅读模式
各位大神过年好,

请帮忙看一下这个宏要怎么改呢. 录制宏的文件路径是指定的 我想改成可以在任意文件夹里选txt文档呢? 然后按格式复制粘贴到excel里. 谢谢!

Test.zip

357.94 KB, 下载次数: 8

TA的精华主题

TA的得分主题

发表于 2024-2-20 12:32 | 显示全部楼层
本帖最后由 半百 于 2024-2-20 12:39 编辑

image.png

TA的精华主题

TA的得分主题

发表于 2024-2-20 12:41 | 显示全部楼层
在原有录制的代码上修改而成
image.png

Book1.7z

475.32 KB, 下载次数: 4

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-20 14:48 | 显示全部楼层
excel玉米 发表于 2024-2-20 12:41
在原有录制的代码上修改而成

谢谢回复!
我试了一下 导入的文件没有直接复制在excel里 而是生成了新的. 可不可以直接复制粘贴在原excel里呀?

TA的精华主题

TA的得分主题

发表于 2024-2-20 17:10 来自手机 | 显示全部楼层
jingxin290 发表于 2024-2-20 14:48
谢谢回复!
我试了一下 导入的文件没有直接复制在excel里 而是生成了新的. 可不可以直接复制粘贴在原exce ...

在你提供的原工作薄里,11,12,13三个工作表,复制粘贴进去的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-27 13:50 | 显示全部楼层
excel玉米 发表于 2024-2-20 17:10
在你提供的原工作薄里,11,12,13三个工作表,复制粘贴进去的。

大神 实在是太厉害了 解决了我一直的困扰. 太太太太感谢了.

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-27 14:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
excel玉米 发表于 2024-2-20 17:10
在你提供的原工作薄里,11,12,13三个工作表,复制粘贴进去的。

不好意思再打扰一下 这个地方不是特别的明白 可以帮忙解答一下吗? 谢谢
shName = Split(.SelectedItems(lngCount), "\")(UBound(Split(.SelectedItems(lngCount), "\")))
       shName = Split(shName, ".")(0)

TA的精华主题

TA的得分主题

发表于 2024-2-28 09:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jingxin290 发表于 2024-2-27 14:22
不好意思再打扰一下 这个地方不是特别的明白 可以帮忙解答一下吗? 谢谢
shName = Split(.SelectedItems( ...

shName = Split(.SelectedItems(lngCount), "\")(UBound(Split(.SelectedItems(lngCount), "\")))
.SelectedItems(lngCount)  这个是选择的文件名称,大概像是D:\文件夹\文件夹\文件名称.xlsx 这样的形式。
用【D:\文件夹\文件夹\文件名称.xlsx】来举例, 将其用split函数,关键字符“\"来分割为数组{”D:“,”文件夹“,”文件夹“,”文件名称.xlsx“}的形式,而ubound(数组)表示取这个数组的下标,也就是shname=文件名称.xlsx
shName = Split(shName, ".")(0)---这一句继续将【文件名称.xlsx】用split函数,关键字符”.“来分割为数组{”文件名称“,”xlsx"},数组的上标可以用 数组(0) 来表示,所以  shName = Split(shName, ".")(0)  这一段就表示shname=文件名称  

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-28 15:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
excel玉米 发表于 2024-2-28 09:12
shName = Split(.SelectedItems(lngCount), "\")(UBound(Split(.SelectedItems(lngCount), "\")))
.Sele ...

明白了
还有一个问题 就是这个文件名称发生变化了之后 好像就不能导入了
Windows("sheet1.xlsm"). Activate. 这个地方要怎么变化呢? 实际运用的时候文件名会不一样的.

TA的精华主题

TA的得分主题

发表于 2024-2-28 15:50 | 显示全部楼层
jingxin290 发表于 2024-2-28 15:18
明白了
还有一个问题 就是这个文件名称发生变化了之后 好像就不能导入了
Windows("sheet1.xlsm"). Act ...

在程序开始时,
dim ws as workbook
set ws =thisworkbook
然后在Windows("sheet1.xlsm"). Activate这里改为 ws. Activate 即可
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 13:31 , Processed in 0.041919 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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