返回列表 上一主題 發帖

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

進入這主題學到不少
搜尋學到,順便分享一下,較常用DefaultFilePath避免上述變化
有空試試,學習一下FileDialog搭配運用


自Excel XP(2002)起,Application多了一個FileDialog屬性。FileDialog 屬性傳回 FileDialog 物件,此物件代表檔案對話方塊的執行個體。

用法:
Application.FileDialog(fileDialogType)
fileDialogType 必選的 MsoFileDialogType。檔案對話方塊的類型。
MsoFileDialogType 可以是這些 MsoFileDialogType 常數之一。

    msoFileDialogFilePicker 允許使用者選取檔案。
    msoFileDialogFolderPicker 允許使用者選取資料夾。
    msoFileDialogOpen 允許使用者開啟檔案。
    msoFileDialogSaveAs 允許使用者儲存檔案。

FileDialog 物件提供檔案對話方塊功能,類似 Microsoft Office 應用程式中的標準 [開啟舊檔] 及 [儲存檔案] 對話方塊功能。運用這些對話方塊,整合方案的使用者可以很容易地指定該方案應使用的檔案及資料夾。

使用 FileDialog 物件
以 FileDialog 屬性傳回 FileDialog 物件。FileDialog 屬性位在每個單獨的 Office 應用程式 Application 物件中。屬性使用一個引數 DialogType,以確定屬性所傳回的 FileDialog 物件類型。下列是 FileDialog 物件的 4 種類型:

    [開啟舊檔] 對話方塊:讓使用者選取一或多個檔案,可使用 Execute 方法在主應用程式中開啟。
    [另存新檔] 對話方塊:讓使用者選取一個檔案,可使用 Execute 方法儲存目前的檔案。
    [檔案選擇器] 對話方塊:讓使用者選取一或多個檔案。在 FileDialogSelectedItems 集合中擷取使用者所選取的檔案路徑。
    [資料夾選擇器] 對話方塊:讓使用者選取路徑。在 FileDialogSelectedItems 集合中擷取使用者所選取的路徑。

每個主應用程式只能例示 FileDialog 物件的單個實例。因此,即使當建立多個 FileDialog 物件時,亦保留 FileDialog 物件的許多屬性。因此,請確認在顯示該對話方塊前,已設定適合您目的之所有屬性。

為了使用 FileDialog 物件顯示對話方塊,您必須使用 Show 方法。一旦顯示對話方塊,就會在使用者結束該對話方塊之後才執行程式碼。
100 字節以內
不支持自定義 Discuz! 代碼

TOP

回報一下測試結果,供參考
Win7+OFFICE 2010
OpenPath4
使用後測試結果 d:\SaveExcel\20121009
但下次選取時為跳到目錄為 d:\SaveExcel

OpenPath5
使用後測試結果d:\SaveExcel\
一樣下次選取時為跳到目錄為 d:\SaveExcel
  1.     Sub OpenPath4()
  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 = .SelectedItems(1)  '#1
  8.         Else
  9.             End
  10.         End If
  11.     End With
  12.     [F2] = FileFolder  '#2
  13.     End Sub
複製代碼
  1. Sub OpenPath5()
  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. [F2] = fd.InitialFileName
  13. End Sub
複製代碼
100 字節以內
不支持自定義 Discuz! 代碼

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

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題