第一篇:用Shell函数打开“文件名和路径中带有空格”的文件的方法(定稿)
用Shell函数打开“文件名和路径中带有空格”的文件的方法 在实验一里许多同学使用下面的语句
a=Shell(“mspaint.exe ” & Fname, vbNormalFocus)时发现了一个问题:如果Fname本身包含空格(例如 d:class testdog.bmp 或者 d:classtestmy dog.bmp),那么系统会试图打开一个错误的文件(上面的两个文件会错误地变为 d:class.bmp 或者d:classtestmy.bmp)从而导致找不到文件错误。如何解决呢?
这是由于Shell函数受到原始DOS系统的影响,即只要发现空格就认为是本参数的结束(下一参数的开始)
如果我们把对应的文件名用英文的双引号括起来,明确告诉系统这是一个完整参数就可以了。例如:
a = Shell(“mspaint.exe ” & “"”C:Program Fileswinnt.bmp“"”, vbNormalFocus)说明:写为“C:Program Fileswinnt.bmp”,系统得到的字符串内容是 C:Program Fileswinnt.bmp
写为“"”C:Program Fileswinnt.bmp“"”,系统得到的字符串内容是 “C:Program Fileswinnt.bmp”
但是,当文件名是一个变量时,写为“"”Fname“"”,系统得到的字符串是 “Fname”这七个字符,已经不再是变量了。那又该如何解决呢?
我们知道当在窗体上打印一个单独的英文双引号时,可以通过 Print “"”“(打印四个连续的英文双引号)来实现,因此我们可以构造出一个带有英文双引号的字符串
例如:变量Fname的值为字符串d:classtestmy dog.bmp,那么”“"” & Fname & “"”“最终的结果就是”d:classtestmy dog.bmp“
因此通过a = Shell(”mspaint.exe “ & ”“"” & Fname & “"”", vbNormalFocus),就可以把本身带有空格的d:classtestmy dog.bmp文件名用画笔程序打开。