2014-10-20 61 views
-1

我有一張工作簿,我從另一張工作表創建工作簿以檢查儀器是否需要校準。如果不需要校準,那麼校準測試頁不需要保存,理想情況下不應該保存。在不保存工作簿的情況下將缺省保存位置保存爲excel中的位置

如果需要校準,那麼我需要將校準表保存到特定文件夾。

我想要的是一個設置saveas位置的腳本,所以如果用戶想要保存該文件,那麼它將在正確的位置打開,允許手動控制保存,也許10或20分鐘後(例如由通常的文件>另存爲方法)。這意味着我不想保存在宏中。對不起,如果這不是最初清楚。

我找不到任何功能來做到這一點,Application.DefaultFilePath = savelocation不起作用,因爲我打開一個現有的模板,所以默認位置總是現有的模板。

我已經在我的工作簿中運行ChDir,然後進入文件>另存爲,它不會改變任何內容,它仍然會打開保存當前(主)文件的文件夾。 Application.GetSaveAsFileName()對我來說沒有用,因爲我知道它保存在哪裏以及我想保存的位置,我只是不想在那裏導航,並且有可能將它保存到錯誤的文件夾中。

+0

見[此SO鏈接](http://stackoverflow.com/questions/18507042/saving-excel-workbook-to-constant-path-with -filename-from-2-fields) – ZAT 2014-10-20 11:10:00

+2

你看過Application.GetSaveAsFileName()函數嗎? InitialFilename參數應該允許你指定一個默認路徑。 – Dave 2014-10-20 11:36:32

+0

@Siddharth你能解釋一下爲什麼它不是重複的? – 2014-10-20 12:21:07

回答

2

我從你的查詢中瞭解到(你的問題標題提示),你不想保存但是設置一個默認路徑。只有當用戶想要保存時,它才應該保存在該目錄中。如果我的理解是正確的,那麼你必須設置使用ChDir()

路徑,例如

ChDir "D:\TMP"  

更多從Excel的幫助

CHDIR聲明

改變當前目錄或文件夾。

語法

CHDIR路徑

所需路徑參數是字符串表達式,用於標識哪個目錄或文件夾成爲新的默認的目錄或文件夾中。路徑可能包含驅動器。如果未指定驅動器,ChDir會更改當前驅動器上的默認目錄或文件夾。

備註

的CHDIR語句更改默認的目錄,但不是默認的驅動器。例如,如果默認驅動器是C,在下面的語句更改驅動器d默認的目錄,但C保持默認驅動器:

編輯

關於節能的手動控制,可以俱樂部ChDir與Dave在上述評論中提到的Application.GetSaveAsFileName一樣。

從評論

這是我嘗試過和它的作品跟進。

Sub Sample() 
    ChDir "C:\Temp" 

    ret = Application.GetSaveAsFilename(_ 
    fileFilter:="Excel Files (*.xlsx), *.xlsx") 
End Sub 

即使我做

Sub Sample() 
    ChDir "C:\Temp" 
End Sub 

,然後手動嘗試使用File-SaveAs它保存,它是我指定的文件夾中打開。

更多跟進

在聊天討論和工作的TeamViewer後,我們意識到問題的網絡路徑,以便選擇是取消另存爲和類模塊中重新寫我們自己的。

Option Explicit 

Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    Dim ret 

    ChDrive "O" 
    ChDir "O:\AQS\03 AQS Customers\Calibration Check\Temp" 


    If SaveAsUI = True Then 
     Cancel = True 
     ret = Application.GetSaveAsFilename(fileFilter:="Excel Files (*.xls*), *.xls*") 
     ' 
     '~~> Rest of the code to save the file 
     ' 
    End If 
End Sub 
+0

我試過這個,它不會改變任何東西。讓我試着澄清我需要執行的操作的最後部分 – Cassiopeia 2014-10-20 12:32:12

+0

Are you sure?我在測試之前不會發布代碼;) – 2014-10-20 12:35:28

+0

我運行了命令(到一個存在的文件夾),然後在退出子文件之前使用「文件>另存爲」,它仍然打開文件的現有位置 – Cassiopeia 2014-10-20 12:37:30

0

這爲我工作:

Sub SaveWorkbookToDifferentDirectoryWithoutChangingFilename() 

ChDrive "Y" 

ChDir "Y:\Existing File Name" 

ActiveWorkbook.SaveAs 

End Sub