標題:
另存新檔問題
[打印本頁]
作者:
enoch
時間:
2012-6-27 15:12
標題:
另存新檔問題
使用 ActiveWorkbook.SaveAs Filename:=newfilename 另存新檔時
若檔案已存在, 會出現警告視窗, 是否取代現有檔案
當選擇不取代現有檔案, 即出現錯誤
請問應如何修改程式, 可選擇取消不儲存, 或更改檔案名稱另存新檔
另外, 若想直接取代舊檔案, 不顯示警告, 又應該如何
請指教
作者:
kimbal
時間:
2012-6-28 13:34
本帖最後由 kimbal 於 2012-6-28 13:39 編輯
找出檔案是不是已經存在,存在的話,把檔名加上時間存起來. (例如c:\abc20120628133801.xls)
Dim strExist As String
dim strFolder as string
dim strFilename as string
strFolder = "c:\"
strFilename="abc"
strExist = Dir(strFolder & strFilename & ".xls")
If strExist = "" Then
ActiveWorkbook.SaveAs Filename:=strFolder & newfilename & ".xls"
else
ActiveWorkbook.SaveAs Filename:=strFolder & newfilename & format(now(),"yyyymmddhhmmss") & ".xls"
End If
複製代碼
直接取代 (把提示停掉)
application.displayalerts=false
ActiveWorkbook.SaveAs Filename:=newfilename
application.displayalerts=true
複製代碼
作者:
enoch
時間:
2012-6-28 15:57
本帖最後由 enoch 於 2012-6-28 16:20 編輯
謝謝 kimbal 指教, 我試到另外方法, 想分享一下
On Error Resume Next
ActiveWorkbook.SaveAs Filename:="book1"
If Err <> 0 Then '取消另存新檔時顯示
Application.Dialogs(xlDialogSaveAs).Show
作者:
GBKEE
時間:
2012-6-28 16:42
回復
3#
enoch
On Error Resume Next 除非確定錯誤點可忽略 ,否則不輕易使用
Option Explicit
Sub Ex()
Dim xlMsg As String, Newfilename As String, xlSave As Integer
Newfilename = "D:\TEST.XLS"
xlMsg = IIf(Dir(Newfilename) <> "", "覆蓋檔案", "儲存檔案")
xlSave = MsgBox(Newfilename & Chr(10) & xlMsg & ":是(Y), 另存檔案:否(N),不存檔案:取消", vbYesNoCancel)
'xlSave 傳回 vbYes, vbNo , vbCancel 三選一
Application.DisplayAlerts = False
If xlSave = vbYes Then
ActiveWorkbook.SaveAs Filename:=Newfilename
ElseIf xlSave = vbNo Then
With Application.FileDialog(msoFileDialogSaveAs)
.InitialFileName = Newfilename
If .Show = -1 Then ActiveWorkbook.SaveAs Filename:=.SelectedItems(1)
End With
End If
Application.DisplayAlerts = True
End Sub
複製代碼
作者:
enoch
時間:
2012-6-29 10:35
本帖最後由 enoch 於 2012-6-29 12:46 編輯
多謝GBKEE , 真的教了我很多
Application.FileDialog 比 Application.Dialogs
更加好用, 可以加上引數, 預先設定檔案名稱等資料
因為有時想不到其它方法, 才會用
On Error Resume Next
若用完之後即時加上
On error goto 0 可以嗎
試完程過, 但有少少問題想再請教
如何控制是OFFICE 03 ".XLS" 檔案呢?
因為程式可能在不同EXCEL版本中使用
雖然明稱是TEST.XLS , 但檔案類型都可能轉了其它版本
作者:
GBKEE
時間:
2012-6-29 12:49
回復
5#
enoch
程式上 是可以如此的
作者:
enoch
時間:
2012-6-29 14:37
但試過若執行程式前, 更改過儲存檔案的類型,
例如之前執行過檔案>>另存新檔>>選擇存檔類型為".CSV"
執行程式時就算檔案後面是".XLS" 尾, 都會更改了".CSV"
作者:
sillykin
時間:
2016-2-25 00:49
回復
4#
GBKEE
不好意思能請問
A是原檔案,在這A檔案中執行『另存新檔』,產生B檔案..以此類推..
要問的問題是:在A檔案另存新檔後(產生2檔案),能停留在A檔案嗎?(因每次『另存新檔』後,工作均停留在每次產生新檔案)要如何停留在A的原檔案呢??
作者:
GBKEE
時間:
2016-2-25 06:21
回復
8#
sillykin
SaveCopyAs 方法 將指定活頁簿的備份儲存到檔案,但不變更記憶體中已開啟的活頁簿。
複製代碼
Sub Ex()
With ThisWorkbook
.SaveCopyAs .Path & "\test.xls" '
End With
End Sub
複製代碼
作者:
sillykin
時間:
2016-7-3 21:01
Dim xPath As String
Dim Arr As Variant
Arr = Array("申請書", "契約書")
Sheets(Arr).Copy
ActiveWorkbook.SaveCopyAs Filename:= _
"C:\" & TextBox1 & "(" & (Year(Date) & Month(Date)) & Day(Date) & ")" & "(" & TextBox2 & ")" & ".xlsm"
ActiveWorkbook.Close
Unload Me
想請問為何執行上述程式,為另存二個sheet ,並存為一個新檔,但會多出一個新的檔案,小弟是否有地方用錯呢????
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)