標題:
[發問]
EXCEL VBA路徑問題
[打印本頁]
作者:
minture3
時間:
2015-4-16 08:47
標題:
EXCEL VBA路徑問題
請教各位
小弟在自訂表單中做了一個commandbutton並且指定程式如下:
Private Sub CommandButton1_Click()
ChDir "\\Nsa310\估價備份\備-電腦估價"
On Error GoTo myLINE
myFile = Application.GetSaveAsFilename
Exit Sub
myLINE:
MsgBox "已取消"
End Sub
複製代碼
主要是用來快速指向固定的存檔位置→"Nsa310\估價備份\備-電腦估價"
但是有時候路徑會自己跑掉變成指向到桌面
請問是否有解?
作者:
PKKO
時間:
2015-4-16 13:38
回復
1#
minture3
試試看
Sub test()
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = "\\Nsa310\估價備份\備-電腦估價"
.Show
'找出路徑
On Error GoTo myLINE
myFile = .SelectedItems(1)
End With
Exit Sub
myLINE:
MsgBox "已取消"
End Sub
複製代碼
作者:
PKKO
時間:
2015-4-16 13:40
回復
1#
minture3
你有時候會指向桌面的原因是因為,您原本指定儲存位置的這行程式碼完全沒用到
他內建的指定儲存位置為(最後一次另存新檔的位置)
作者:
minture3
時間:
2015-4-16 16:13
本帖最後由 minture3 於 2015-4-16 16:16 編輯
回復
2#
PKKO
感謝回覆!!
依您所以提供的程式碼得到的會是這個
[attach]20672[/attach]
myFile = .SelectedItems(1)
請教這一段的意思是?
myFile = Application.GetSaveAsFilename
不過我希望得到的是
[attach]20672[/attach]
作者:
minture3
時間:
2015-4-16 16:19
請教這一段的意思是?
myFile = .SelectedItems(1)
我有試著把他改成以下這段
myFile = Application.GetSaveAsFilename
不過會變成先出現上圖的對話框取消後在出現下圖的對話框
不過我希望得到的是只有下圖這個
作者:
PKKO
時間:
2015-4-16 18:46
回復
5#
minture3
試試看
myFile =Application.GetSaveAsFilename( "\\Nsa310\估價備份\備-電腦估價")
作者:
minture3
時間:
2015-4-17 16:43
回復
6#
PKKO
myFile =Application.GetSaveAsFilename
檔案的路徑好像是對了 但是點了儲存之後 檔案並沒有存進去
剛剛單獨試了一下Application.GetSaveAsFilename
會彈出另存的對話框
但是按了儲存之後 並沒有值型儲存的動作~~
不知道是不是我用法有誤
Private Sub CommandButton10_Click()
Application.GetSaveAsFilename
End Sub
複製代碼
作者:
diolin
時間:
2015-4-17 17:17
回復
1#
minture3
chdir 在 windows 7 上會有點問題, 後來我都改用 API 來指定
Private Declare Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long
SetCurrentDirectoryA "\\Nsa310\估價備份\備-電腦估價"
作者:
PKKO
時間:
2015-4-17 21:12
回復
7#
minture3
我以為你知道用法
myFile =Application.GetSaveAsFilename( "\\Nsa310\估價備份\備-電腦估價")
這行程式碼只是用來告訴你:
另存新檔的位置以及檔案名稱
並不會實際上真的執行另存新檔的動作
所以你需要的程式碼如下
myFile = Application.GetSaveAsFilename("\\Nsa310\估價備份\備-電腦估價")
ActiveWorkbook.SaveAs myFile & "xlsx"'才可儲存至你指定的檔案位置,後面的"xlsx"是EXCEL副檔案名稱,你也可以換成"xls","xlsm"
作者:
minture3
時間:
2015-4-20 15:51
回復
9#
PKKO
感謝PKKO
If Application.GetSaveAsFilename("\\Nsa310\估價備份\CWCO\備-電腦估價\") Then
Dim myName As String
Sheets("窗").Select
myName = Range("AB4") & "-" & Range("AB5") & "-" & Range("AB6")
ActiveWorkbook.SaveAs Filename:=myName, FileFormat:=xlExcel8, Password:="1273"
Else
MsgBox ("已取消")
End If
複製代碼
基本上功能差不多接近我要的了
不過奇怪的是執行這一行時
Application.GetSaveAsFilename ("\\Nsa310\估價備份\CWCO\備-電腦估價\")
可以指定存檔的路徑
不過他一定會彈出這個視窗
不管按確定還是取消最後還是靠這行另存檔案
ActiveWorkbook.SaveAs Filename:=myName, FileFormat:=xlExcel8, Password:="1273"
雖然接近我要的了 不過感覺就是怪怪的!!~
作者:
minture3
時間:
2015-4-20 16:12
回復
8#
diolin
請教diolin
Private Declare Function SetCurrentDirectoryA Lib "kernel32" (ByVal lpPathName As String) As Long
SetCurrentDirectoryA "\\Nsa310\估價備份\備-電腦估價"
這個的用法是??
作者:
PKKO
時間:
2015-4-20 19:24
回復
10#
minture3
我不曉得VBA有沒有可以透過瀏覽視窗之後直接儲存的程式碼
但實際操作的時候,完全感覺不到差異
因為點選完畢=產生路徑
將活頁簿儲存新檔案(用產生的路徑),你不會感覺到有任何差異,就好像點了就儲存一樣!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)