ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何利用VBA变量来指代文件夹路径

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-6-25 09:32 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我想利用VBA的变量来指代文件夹的路径,然后在这个变量指定的文件夹下创建一个新的文件夹,并将打开的文件存在这个新文件夹下。

1.如果指定的文件夹路径是不变的,程序非常简单。比如指定文件夹路径为C:\456
Sub FileSaveTest()
Workbooks.Open Filename:="c:\123.xlsx" ’打开文件
MkDir "C:\456\789" ‘在指定的文件夹456下创建新的文件夹789
ActiveWorkbook.SaveAs "C:\456\789\123copy.xlsx” ‘将文件123存入文件夹789并命名为123copy.
End Sub

2.如果由用户来指定文件夹路径,需要用到变量,可以用input函数来让用户输入路径,但是我用的是下面这个方法提取路径的:
Sub FileSaveTest()
Dim FolderPath As String
       With Application.FileDialog(msoFileDialogFolderPicker) ‘选取并指定文件夹路径C:\456
               .Show
               FolderPath = .SelectedItems(1)’ 提取文件夹路径C:\456
      End With
Workbooks.Open Filename:="c:\123.xlsx" ’打开文件
MkDir "& FoderPath &”\789" ‘在指定的文件夹下创建新的文件夹取名789
ActiveWorkbook.SaveAs "& FolderPath &”\789\123copy.xlsx” ‘将文件123存入文件夹789并命名为123copy.
End Sub
但是这段code运行提示找不到路径,我想原因是在语句Mkdir和ActiveWorkbook.SaveAs 中变量的表达方式不对。因为通过 With Application.FileDialog(msoFileDialogFolderPicker) 赋给FolderPath的值是一个带引号的字符串如:”c:\456”。这样一个字符串到了MkDir "& FoderPath &”\789"这里就成了””c:\456””\789, 所以找不到路径。
请问如何修改代码,谢谢!

[ 本帖最后由 xfwxiao 于 2011-6-25 09:51 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-25 09:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

  1. Sub FileSaveTest()
  2. Dim FolderPath As String
  3.        With Application.FileDialog(msoFileDialogFolderPicker) '选取并指定文件夹路径C:\456
  4.                .Show
  5.                FolderPath = .SelectedItems(1) ' 提取文件夹路径C:\456
  6.       End With
  7. Workbooks.Open Filename:="c:\123.xlsx" '打开文件
  8. MkDir FolderPath & "\789" '在指定的文件夹下创建新的文件夹取名456
  9. ActiveWorkbook.SaveAs FolderPath & "\789\123copy.xlsx" '将文件123存入文件夹789并命名为123copy."
  10. End Sub

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-25 09:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
MkDir FolderPath & "\789"
一针见血,谢谢楼上,我总是不能很好的运用&,什么时候用?用在哪里?

[ 本帖最后由 xfwxiao 于 2011-6-25 09:59 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-6-25 10:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 xfwxiao 于 2011-6-25 09:55 发表
MkDir FolderPath & "\789"
一针见血,谢谢楼上,我总是不能很好的运用&,什么时候用?用在哪里?


这个&用得太多了。
比如:
S="123"
S="1" & "2" & "3"

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-25 10:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
再请教楼上,如果我的文件名的某一段中含有变量,这个&应该如何书写呢?
ActiveWorkbook.SaveAs FolderPath & "\789\123 +用户输入的内容+copy.xlsx”

TA的精华主题

TA的得分主题

发表于 2011-6-25 10:40 | 显示全部楼层
&用于连接前后的数据。如果是字符串,就要加上引号,对象或者变量不能加引号。
X = InputBox("输入")
ActiveWorkbook.SaveAs FolderPath & "\789\123" & X & "copy.xlsx"

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-6-25 11:09 | 显示全部楼层
谢谢楼上,开始明白如何用了。
想问问一下,如果我用VBA打开一个excel 文件,然后用鼠标在这个文件中选定几个连续 或者 不连续的 单元格作为range;这些鼠标选定的range可以传递给VBA的一个range变量吗?因为在进一步的循环语句中中,我想利用这个用户指定的range变量。

TA的精华主题

TA的得分主题

发表于 2011-7-22 07:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不连接的区域好像不能设置range变量。

[ 本帖最后由 cm96999 于 2011-7-23 07:29 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-12-22 10:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
livewire 发表于 2011-6-25 09:39

请问,为什么我用以下代码时
Workbooks.Open Filename:="d:\配合内控销售循环使用.xlsx"
出现
运行时错误1004
方法open作用于对象workbooks时失败?
我是在excel2007中运行

TA的精华主题

TA的得分主题

发表于 2023-3-10 17:41 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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