返回列表 上一主題 發帖

[發問] EXCEL VBA路徑問題

[發問] EXCEL VBA路徑問題

請教各位
小弟在自訂表單中做了一個commandbutton並且指定程式如下:
  1. Private Sub CommandButton1_Click()
  2. ChDir "\\Nsa310\估價備份\備-電腦估價"
  3.    On Error GoTo myLINE
  4.     myFile = Application.GetSaveAsFilename
  5.     Exit Sub
  6. myLINE:
  7.     MsgBox "已取消"
  8. End Sub
複製代碼
主要是用來快速指向固定的存檔位置→"Nsa310\估價備份\備-電腦估價"
但是有時候路徑會自己跑掉變成指向到桌面
請問是否有解?

回復 1# minture3

試試看
  1. Sub test()
  2.     With Application.FileDialog(msoFileDialogFolderPicker)
  3.         .InitialFileName = "\\Nsa310\估價備份\備-電腦估價"
  4.         .Show
  5.         '找出路徑
  6.         On Error GoTo myLINE
  7.         myFile = .SelectedItems(1)
  8.     End With
  9.     Exit Sub
  10. myLINE:
  11.     MsgBox "已取消"
  12. End Sub
複製代碼
PKKO

TOP

回復 1# minture3

你有時候會指向桌面的原因是因為,您原本指定儲存位置的這行程式碼完全沒用到

他內建的指定儲存位置為(最後一次另存新檔的位置)
PKKO

TOP

本帖最後由 minture3 於 2015-4-16 16:16 編輯

回復 2# PKKO
感謝回覆!!
依您所以提供的程式碼得到的會是這個



myFile = .SelectedItems(1)
請教這一段的意思是?

myFile = Application.GetSaveAsFilename

不過我希望得到的是

1.png (87.76 KB)

1.png

TOP

請教這一段的意思是?
myFile = .SelectedItems(1)
我有試著把他改成以下這段
myFile = Application.GetSaveAsFilename
不過會變成先出現上圖的對話框取消後在出現下圖的對話框
不過我希望得到的是只有下圖這個

TOP

回復 5# minture3

試試看
   myFile =Application.GetSaveAsFilename( "\\Nsa310\估價備份\備-電腦估價")
PKKO

TOP

回復 6# PKKO

myFile =Application.GetSaveAsFilename
檔案的路徑好像是對了 但是點了儲存之後 檔案並沒有存進去

剛剛單獨試了一下Application.GetSaveAsFilename
會彈出另存的對話框
但是按了儲存之後 並沒有值型儲存的動作~~
不知道是不是我用法有誤
  1.   Private Sub CommandButton10_Click()
  2.     Application.GetSaveAsFilename
  3. End Sub  
複製代碼

TOP

回復 1# minture3

chdir 在 windows 7 上會有點問題, 後來我都改用 API 來指定

Private Declare Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long

SetCurrentDirectoryA "\\Nsa310\估價備份\備-電腦估價"

TOP

回復 7# minture3


    我以為你知道用法

myFile =Application.GetSaveAsFilename( "\\Nsa310\估價備份\備-電腦估價")

這行程式碼只是用來告訴你:另存新檔的位置以及檔案名稱

並不會實際上真的執行另存新檔的動作

所以你需要的程式碼如下

    myFile = Application.GetSaveAsFilename("\\Nsa310\估價備份\備-電腦估價")
    ActiveWorkbook.SaveAs myFile & "xlsx"'才可儲存至你指定的檔案位置,後面的"xlsx"是EXCEL副檔案名稱,你也可以換成"xls","xlsm"
PKKO

TOP

回復 9# PKKO

感謝PKKO
  1. If Application.GetSaveAsFilename("\\Nsa310\估價備份\CWCO\備-電腦估價\") Then
  2. Dim myName As String
  3. Sheets("窗").Select
  4. myName = Range("AB4") & "-" & Range("AB5") & "-" & Range("AB6")
  5. ActiveWorkbook.SaveAs Filename:=myName, FileFormat:=xlExcel8, Password:="1273"
  6. Else
  7. MsgBox ("已取消")
  8. End If
複製代碼
基本上功能差不多接近我要的了
不過奇怪的是執行這一行時
Application.GetSaveAsFilename ("\\Nsa310\估價備份\CWCO\備-電腦估價\")
可以指定存檔的路徑
不過他一定會彈出這個視窗

不管按確定還是取消最後還是靠這行另存檔案
ActiveWorkbook.SaveAs Filename:=myName, FileFormat:=xlExcel8, Password:="1273"
雖然接近我要的了 不過感覺就是怪怪的!!~

2.png (74.09 KB)

2.png

2.png (74.09 KB)

2.png

TOP

        靜思自在 : 要用心,不要操心、煩心。
返回列表 上一主題