返回列表 上一主題 發帖

[發問] 2003與2007得到的路徑差異

[發問] 2003與2007得到的路徑差異

  1. Sub OpenPath()
  2. Dim fd As FileDialog, FileName As String, FileFolder As String
  3. Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  4. With fd
  5.     .AllowMultiSelect = False
  6.     If .Show = -1 Then
  7.         FileFolder = .InitialFileName
  8.     Else
  9.         End
  10.     End If
  11. End With
  12. Sheet1.Range("F2") = fd.InitialFileName
  13. End Sub
複製代碼
在2003時可以完全的拿到路徑,可是在2007時就只能拿到當前路徑的上一層,請問哪裡出錯了?
例如:
在2003時拿到的路徑是:
d:\SaveExcel\20121009
可是在2007時拿到的路徑是:
d:\SaveExcel\
就差這麼一層。

回復 21# Happkkevin


   

的確如你所說的那樣,2003選取後下次開啟是不會跳回上一層的,所以我說就是兩種版本的FileDialog的差異,正在等待高手如何解決,謝謝!

TOP

回復 19# maiko

InitialFileName  會設定或傳回 String,此字串代表最初顯示在檔案對話方塊中的路徑或檔名。可讀寫的。
SelectedItems  會取得 FileDialogSelectedItems 集合。這個集合包含使用者在使用 FileDialog 物件的 Show 方法所顯示的檔案對話方塊中選取之檔案的路徑清單。唯讀的。

單純測試回報
如果依照我以2010版或你使用的2007版,如我上面回覆敘述,下次選取時為跳到目錄為選取時的上一層即 d:\SaveExcel,所以取得的 fd.InitialFileName還是d:\SaveExcel\
而使用SelectedItems 才會是選取的d:\SaveExcel\20121009,可以試試2003版是否選取後下次開啟是否不會跳回上一層,若是如此,應該是兩種版本 之FileDialog差異
這就需要高手們協助了
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 19# maiko
可是InitialFileName如果用在2007上卻是得到的路徑會少了一層
我只有2003版 所以這差異我無從參與的.

TOP

回復  maiko
GBKEE 發表於 2012-10-10 12:42



   
謝謝大大的熱心幫忙,不過大大好像不明白我前面所講的要求:

InitialFileName如果用在2003上是完全可以取得完整的路徑,如:d:\SaveExcel\20121009\
可是InitialFileName如果用在2007上卻是得到的路徑會少了一層,如:d:\SaveExcel\,這也就是你說的後面有"\",可是路徑不完整。

如果用SelectedItems(1),那麼在2003或2007(因為我沒有2010,可是之前有大大在2010上試過)是可以取得到比較完整的路徑,如:d:\SaveExcel\20121009,後面就沒有"\",就如stillfish00大說過的那樣,唯有自己加上& "\",不知道這樣說明你能清楚嗎?

請試多幾次代碼的區別,謝謝大大的熱心幫忙!

TOP

回復 17# maiko
  1. Option Explicit
  2. Sub OpenPath()
  3. Dim fd As FileDialog, FileName As String, FileFolder As String
  4. Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  5. With fd
  6.      .InitialFileName = "E:\"  '指定對話視窗的目錄
  7.      .AllowMultiSelect = False
  8.     If .Show = -1 Then
  9.         FileFolder = .SelectedItems(1)   '選擇的資料夾
  10.         [F2] = .SelectedItems(1)      '最後沒"\"
  11.         [F3] = fd.InitialFileName    '有"\"
  12.     Else
  13.         End
  14.     End If
  15. End With
  16. End Sub
複製代碼

TOP

回復  maiko
很抱歉沒說清楚 請再看  2# 的程式碼 有 FileFolder = .SelectedItems(1)   
stillfish00 2 ...
GBKEE 發表於 2012-10-10 08:28



   

那麼依你所見,是不是Sheet1.Range("F2") = FileFolder 最後是沒有「\」,那麼應該用什麼才會有「\」?不用後面自己加& "\"?

TOP

回復 15# maiko
很抱歉沒說清楚 請再看  2# 的程式碼 有 FileFolder = .SelectedItems(1)   
stillfish00 2# 是 Sheet1.Range("F2") = FileFolder 是最後沒有 "\"

TOP

回復  maiko
而我用stillfish00大提供的取得的檔案路徑卻是:d:\SaveExcel\20101009,後面少了「\」      ...
GBKEE 發表於 2012-10-10 07:37



   

FileFolder = .InitialFileName
也就是:
FileFolder = fd.InitialFileName
對等公式。
試過了,結果一樣,唯有像 stillfish00 大說的一樣,在後面加上 & "\" ,那麼無論甚麼版本的Excel都可以用到,統一樣式,不會讓以後改了版本就用不到。

謝謝這麼多位高手的幫助,讓我更了解了FileDialog的屬性,謝謝!

TOP

回復 8# maiko
而我用stillfish00大提供的取得的檔案路徑卻是:d:\SaveExcel\20101009,後面少了「\」           
不一樣的  1# 是 Sheet1.Range("F2") = fd.InitialFileName
stillfish00 2# 是 Sheet1.Range("F2") = FileFolder

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題