热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

文件名没有扩展名VBA

如何解决《文件名没有扩展名VBA》经验,为你挑选了2个好方法。

我需要通过VBA获取没有扩展名的文件名.我知道ActiveWorkbook.Name属性,但如果用户Hide extensions for known file types关闭Windows属性,我的代码的结果将是[Name.Extension].如何只返回独立于windows属性的工作簿名称?

我尝试甚至ActiveWorkbook.Application.Caption但我无法自定义此属性.



1> RubberDuck..:

这里给出的答案可能在有限的情况下有效,但肯定不是最好的方法.不要重新发明轮子.该文件系统对象在Microsoft脚本运行时库已经做的正是这样的方法.它叫做GetBaseName.它按原样处理文件名中的句点.

Public Sub Test()

    Dim fso As New Scripting.FileSystemObject
    Debug.Print fso.GetBaseName(ActiveWorkbook.Name)

End Sub

Public Sub Test2()

    Dim fso As New Scripting.FileSystemObject
    Debug.Print fso.GetBaseName("MyFile.something.txt")

End Sub

添加对脚本库的引用的说明


RbeerDuck,当我运行此命令时,出现编译错误"用户定义的类型未定义"
不知道那里有!很好的答案.
抱歉-应该给自己解释一下。如果您在资源管理器中隐藏了扩展名,并且文件名很愚蠢,例如“ Myworkbook.csv.xlsx”(很少见),它将无法正常工作。在这种情况下,.Name属性是“ Myworkbook.csv”,而GetBaseName返回“ Myworkbook”,这是不正确的。此外:隐藏扩展名时,如果尝试将附带的fso函数`GetExtensionName`与`Workbook.Name`属性一起使用,则不会得到任何答案。更好的做法是只使用`Workbook.Fullname`属性,该属性将返回相同的字符串,而不管Explorer的“隐藏扩展名”设置如何。
@ ThreeStarProgrammer57我认为你应该在你建议它不起作用之前尝试一下.

2> 小智..:

简单,但对我来说效果很好

FileName = ActiveWorkbook.Name 
If InStr(FileName, ".") > 0 Then 
   FileName = Left(FileName, InStr(FileName, ".") - 1) 
End If


推荐阅读
author-avatar
cxsw01
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有