第一篇:用Shell函數(shù)打開“文件名和路徑中帶有空格”的文件的方法(定稿)
用Shell函數(shù)打開“文件名和路徑中帶有空格”的文件的方法 在實(shí)驗(yàn)一里許多同學(xué)使用下面的語句
a=Shell(“mspaint.exe ” & Fname, vbNormalFocus)時(shí)發(fā)現(xiàn)了一個(gè)問題:如果Fname本身包含空格(例如 d:class testdog.bmp 或者 d:classtestmy dog.bmp),那么系統(tǒng)會(huì)試圖打開一個(gè)錯(cuò)誤的文件(上面的兩個(gè)文件會(huì)錯(cuò)誤地變?yōu)?d:class.bmp 或者d:classtestmy.bmp)從而導(dǎo)致找不到文件錯(cuò)誤。如何解決呢?
這是由于Shell函數(shù)受到原始DOS系統(tǒng)的影響,即只要發(fā)現(xiàn)空格就認(rèn)為是本參數(shù)的結(jié)束(下一參數(shù)的開始)
如果我們把對應(yīng)的文件名用英文的雙引號(hào)括起來,明確告訴系統(tǒng)這是一個(gè)完整參數(shù)就可以了。例如:
a = Shell(“mspaint.exe ” & “"”C:Program Fileswinnt.bmp“"”, vbNormalFocus)說明:寫為“C:Program Fileswinnt.bmp”,系統(tǒng)得到的字符串內(nèi)容是 C:Program Fileswinnt.bmp
寫為“"”C:Program Fileswinnt.bmp“"”,系統(tǒng)得到的字符串內(nèi)容是 “C:Program Fileswinnt.bmp”
但是,當(dāng)文件名是一個(gè)變量時(shí),寫為“"”Fname“"”,系統(tǒng)得到的字符串是 “Fname”這七個(gè)字符,已經(jīng)不再是變量了。那又該如何解決呢?
我們知道當(dāng)在窗體上打印一個(gè)單獨(dú)的英文雙引號(hào)時(shí),可以通過 Print “"”“(打印四個(gè)連續(xù)的英文雙引號(hào))來實(shí)現(xiàn),因此我們可以構(gòu)造出一個(gè)帶有英文雙引號(hào)的字符串
例如:變量Fname的值為字符串d:classtestmy dog.bmp,那么”“"” & Fname & “"”“最終的結(jié)果就是”d:classtestmy dog.bmp“
因此通過a = Shell(”mspaint.exe “ & ”“"” & Fname & “"”", vbNormalFocus),就可以把本身帶有空格的d:classtestmy dog.bmp文件名用畫筆程序打開。