| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1287 人关注过本帖
标题:文件名包含空格怎么处理?
只看楼主 加入收藏
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:7 
文件名包含空格怎么处理?
请教,很奇怪的,有两个文件,这两个文件的文件名都包含空格,但在filebox中显示,一个文件名中的空格正常显示,另一个文件名中的空格却显示为问号,空格显示正常的文件能使用“Set xbook1 = xap.Workbooks.Open(File1.Path & "\" & File1.List(0))”语句;文件名中的空格显示为问号的文件使用“Set xbook1 = xap.Workbooks.Open(File1.Path & "\" & File1.List(0))”语句报“实时错误1004,对象OPEN的方法Workbooks失败”错误。

现在请求,不管在filebox中是否显示正常,只要在文件名中包含空格,全部空格替换成下划线“_”,这样的改名语句怎样写?(不用shell语句指定具体文件名)

a.rar (10.01 KB)

图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 显示 包含 空格 文件 文件名 
2022-12-16 09:49
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:7 
肯定不是“空格”
先要了解清楚,这个文件是怎样产生的? 文件名是不是从哪里复制过来的?
2022-12-16 14:47
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
以下是引用吹水佬在2022-12-16 14:47:58的发言:

肯定不是“空格”
先要了解清楚,这个文件是怎样产生的? 文件名是不是从哪里复制过来的?



版主大大,这个已经追溯不出来了,也许是用什么软件将PDF文件转换成EXCEL文件形成的,也有可能是某种系统直接生成的Excel文件,没办法了解了。
现在我就想把带问号的文件名去除问号改名,但不成功,我自己的语句是:
程序代码:
If InStr(File1.List(i), "?") > 0 Then
temp = Replace(File1.List(i), "?", "_")
End If
Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\" & temp)

name语句报错
强制修改,Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\1.xlsx" )也不行

但同样的语句修改带空格文件名可以成功。
程序代码:
If InStr(File1.List(i), " ") > 0 Then
temp = Replace(File1.List(i), " ", "_")
End If
Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\" & temp)


现在就是想请问,还有没有别的什么办法可以修改?
2022-12-16 16:04
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 3楼 ictest
试用CMD命令copy或ren先换个名,再改成什么名都可以。
2022-12-16 16:40
mrexcel
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:126
专家分:480
注 册:2022-11-3
收藏
得分:7 
以下是引用ictest在2022-12-16 16:04:41的发言:




版主大大,这个已经追溯不出来了,也许是用什么软件将PDF文件转换成EXCEL文件形成的,也有可能是某种系统直接生成的Excel文件,没办法了解了。
现在我就想把带问号的文件名去除问号改名,但不成功,我自己的语句是:

If InStr(File1.List(i), "?") > 0 Then
temp = Replace(File1.List(i), "?", "_")
End If
Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\" & temp)

name语句报错
强制修改,Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\1.xlsx" )也不行

但同样的语句修改带空格文件名可以成功。

If InStr(File1.List(i), " ") > 0 Then
temp = Replace(File1.List(i), " ", "_")
End If
Name (File1.Path & "\" & File1.List(i)) As (File1.Path & "\" & temp)


现在就是想请问,还有没有别的什么办法可以修改?

试试替换
chr(63)
2022-12-16 23:32
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:7 
显示 ? 只是给你看的而以,实际上不是 ? 。 显示 ? 只是 那个字符是不可显示字符而以。

在 CMD 命令行中,使用 DOS 的 DIR 命令列一下文件名看看是什么字符,然后复制内容,再进行改名试试。
windows 直接重命名也应该可以改得了名字。

你代码中,因为 filelist 读到的文件本来就是错误的,所以改名、打开什么都会报错的。
也许是 filelist 是 ANSI 标准,存在无法处理的字符,不知道 VB 的 DIR 命令返回结果是不是 UNICODE 的,可以试一下。
把返回结果直接放到一个 BYTE 数组里,然后通过人工读取 数组对应元素的值 来判断是是什么字符。


授人于鱼,不如授人于渔
早已停用QQ了
2022-12-17 13:10
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:333
专家分:114
注 册:2010-2-17
收藏
得分:0 
我大致估计是Chr(9) , Tab空格。
dos下也无法改名。
只有在windows界面下可以改名。
2022-12-17 14:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
猜不出是啥,我在WIN平台下手动改名,凡 32 以内的字符,要么不显示,要么无法确认报错。

win平台直接输入非键盘区字的方法 :
按住ALT键,然后在小键盘数字键区输入ASCII码值,放开ALT键结束输入。注意要在英文 状态,有输入法时无效。WIN7测试成功,我知道这方法是好像是WIN2000。

授人于鱼,不如授人于渔
早已停用QQ了
2022-12-19 20:57
快速回复:文件名包含空格怎么处理?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036372 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved