ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 宏中另存为的时的文件名问题?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-4-28 08:51 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
大家好,由于我有多个excel需要进行操作,所以希望每次运行宏的时候在最后阶段的另存为文件名按源文件名命名,请问该如何实现?
即下列宏中得    dist_aga_0.02-2_46b_1.xvg 在运行在不同的文件时名称是它自己的名字

    "D:\paper\data\distance\lz\flat50q0.02pro++--0.02pme\2\xlx\dist_aga_0.02-2_46b_1.xvg" _
        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWorkbook.Close
End Sub


谢谢大家

TA的精华主题

TA的得分主题

发表于 2012-4-28 09:29 | 显示全部楼层

不知道你是否是 获取文件名吗?  说的复杂了
  1. Sub GetFileName(ByVal fname As String)

  2.     Dim fs, fold, fls, fl
  3.     Dim lr, val As Integer
  4.     val = 0
  5.     Range("b6:d30").ClearContents '表格清空
  6.    
  7.     Set fs = CreateObject("Scripting.FileSystemObject")
  8.     Set fold = fs.getfolder(fname) 'folderpath指文件夹路径,string型,实践中自行替换
  9.     Set fls = fold.Files
  10.    
  11.     For Each fl In fls
  12.         If InStr(fl.Name, ".xls") <> 0 Or InStr(fl.Name, ".xlsx") <> 0 Then '避免打开非Excel文件
  13.             'Workbooks.Open fl.Path  '打开文件
  14.            ' statements '处理代码
  15.            ' Workbooks(fl.Name).Close Savechanges:=True  '关闭文件
  16.             lr = Range("c100").End(xlUp).Row
  17.             Cells(lr + 1, 3).Value = JieQu(fl.Name)
  18.             Cells(lr + 1, 2).Value = val + 1
  19.             val = Cells(lr + 1, 2).Value
  20.         End If

  21.     Next
  22.    
  23.    
  24. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-4-28 09:30 | 显示全部楼层

遗漏了一个自定义函数
  1. '截取----
  2. Public Function JieQu(ByVal fname As String) As String
  3.     Dim ss
  4.     ss = Split(fname, "")
  5.     JieQu = ss(UBound(ss))
  6. End Function
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-28 09:34 | 显示全部楼层
wisdom100 发表于 2012-4-28 09:29
不知道你是否是 获取文件名吗?  说的复杂了

感谢回复!
应该是没有获取文件名,请问这些代码是加在哪里?用thisworkbook.name可以么?怎么加?

TA的精华主题

TA的得分主题

发表于 2012-4-28 09:57 | 显示全部楼层
lihaosqy 发表于 2012-4-28 09:34
感谢回复!
应该是没有获取文件名,请问这些代码是加在哪里?用thisworkbook.name可以么?怎么加?

可以用下面两行来取当前文件名和路径,你的代码不全,应该在存文件前把文件名变量赋值
  1. ThisWorkbook.Path
  2. ThisWorkbook.Name
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-28 10:07 | 显示全部楼层
jlhao 发表于 2012-4-28 09:57
可以用下面两行来取当前文件名和路径,你的代码不全,应该在存文件前把文件名变量赋值

Sub 分列()
'
' 分列 宏
'
' 快捷键: Ctrl+d
'
    ActiveWindow.SmallScroll Down:=-9
    Range("A23").Select
    ActiveWindow.ScrollRow = 342
    ActiveWindow.ScrollRow = 527
    ActiveWindow.ScrollRow = 852
    ActiveWindow.ScrollRow = 1085
    ActiveWindow.ScrollRow = 1967
    ActiveWindow.ScrollRow = 2741
    ActiveWindow.ScrollRow = 3205
    ActiveWindow.ScrollRow = 3964
    ActiveWindow.ScrollRow = 4413
    ActiveWindow.ScrollRow = 4970
    ActiveWindow.ScrollRow = 5264
    ActiveWindow.ScrollRow = 5837
    ActiveWindow.ScrollRow = 6100
    ActiveWindow.ScrollRow = 6333
    ActiveWindow.ScrollRow = 6611
    ActiveWindow.ScrollRow = 7076
    ActiveWindow.ScrollRow = 7230
    ActiveWindow.ScrollRow = 7463
    ActiveWindow.ScrollRow = 7587
    ActiveWindow.ScrollRow = 7803
    ActiveWindow.ScrollRow = 7927
    ActiveWindow.ScrollRow = 8144
    ActiveWindow.ScrollRow = 8314
    ActiveWindow.ScrollRow = 8531
    ActiveWindow.ScrollRow = 8686
    ActiveWindow.ScrollRow = 8887
    ActiveWindow.ScrollRow = 9026
    ActiveWindow.ScrollRow = 9196
    ActiveWindow.ScrollRow = 9413
    ActiveWindow.ScrollRow = 9522
    ActiveWindow.ScrollRow = 9599
    ActiveWindow.ScrollRow = 9676
    ActiveWindow.ScrollRow = 9738
    ActiveWindow.ScrollRow = 9800
    ActiveWindow.ScrollRow = 9816
    ActiveWindow.ScrollRow = 9862
    ActiveWindow.ScrollRow = 9878
    ActiveWindow.ScrollRow = 9893
    ActiveWindow.ScrollRow = 9924
    ActiveWindow.ScrollRow = 9940
    ActiveWindow.ScrollRow = 9971
    ActiveWindow.ScrollRow = 9986
    ActiveWindow.SmallScroll Down:=6
    Range("A23:A10023").Select
    Selection.TextToColumns Destination:=Range("A23"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True
    ChDir "D:\paper\data\distance\lz\flat50q0.02pro++--0.02pme\2\xlx"
    ActiveWorkbook.SaveAs Filename:= _
        "D:\paper\data\distance\lz\flat50q0.02pro++--0.02pme\2\xlx\" & ThisWorkbook.Name &".xvg" _
        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

TA的精华主题

TA的得分主题

发表于 2012-4-28 10:19 | 显示全部楼层
lihaosqy 发表于 2012-4-28 10:07
Sub 分列()
'
' 分列 宏

你代码里的有效部分为:
  1. Sub 分列()
  2. '
  3. ' 分列 宏
  4. '
  5. ' 快捷键: Ctrl+d
  6. '
  7.     Range("A23:A10023").Select
  8.     Selection.TextToColumns Destination:=Range("A23"), DataType:=xlDelimited, _
  9.         TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
  10.         Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
  11.         :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
  12.         TrailingMinusNumbers:=True
  13.     ChDir "D:\paper\data\distance\lz\flat50q0.02pro++--0.02pme\2\xlx"
  14.     ActiveWorkbook.SaveAs Filename:= _
  15.         "D:\paper\data\distance\lz\flat50q0.02pro++--0.02pme\2\xlx" & ThisWorkbook.Name & ".xvg" _
  16.         , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
  17.         ReadOnlyRecommended:=False, CreateBackup:=False
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-28 10:27 | 显示全部楼层
jlhao 发表于 2012-4-28 10:19
你代码里的有效部分为:

恩,大侠请问这个宏在其它excel运行的时候依然不可以读取且保存当前文件名,怎么解决?
(如果宏是存在个人宏文件夹,则生成文件名为PERSONAL.XLSB.xvg,如果保存在当前文件里,生成的文件名也不对)

TA的精华主题

TA的得分主题

发表于 2012-4-28 10:31 | 显示全部楼层
lihaosqy 发表于 2012-4-28 10:27
恩,大侠请问这个宏在其它excel运行的时候依然不可以读取且保存当前文件名,怎么解决?
(如果宏是存在个 ...

你用
  1. msgbox ThisWorkbook.Name
复制代码
看一下显示的文件名是什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-4-28 10:49 | 显示全部楼层
本帖最后由 lihaosqy 于 2012-4-28 10:50 编辑


jlhao 发表于 2012-4-28 10:31
你用看一下显示的文件名是什么?

请问在哪里输入这个?
下面是例子
dist_aga_0.02-2_46b_1.rar (204.6 KB, 下载次数: 8)
dist_aga_0.02-2_46b_2.rar (200.44 KB, 下载次数: 6)



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

本版积分规则

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

GMT+8, 2024-11-20 22:41 , Processed in 0.049090 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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