寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?
如果答“是”,正常運作,但是答“否”會跳到除錯模式,請問答”否“等如除消,怎麼編寫?
Sub SaveAS()
'
' 巨集1巨集
'
是否另存新檔 = InputBox("是否另存新檔? 是:Y, 否:N", , "Y")
File = Application.Range("D6")
Name = Application.Range("M7")
ActiveWorkbook.SaveAs Filename:=File & "-" & Name & ".xlsm"
End Sub |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
感謝!
另一個問題,如果檔案名稱已經存在,答"是"就如常蓋了舊的,但答"否"又怎寫呢? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 2# kimbal
感謝!
另一個問題,如果檔案名稱已經存在,答"是"就如常蓋了舊的,但答"否"又怎寫呢? |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 Blade
試試看
GBKEE 發表於 2012-12-18 11:12 
我現時的編碼是這樣
Sub SaveAS()
'
' Module2 Module
' invno
'
ActiveWorkbook.Save
是否另存新檔 = MsgBox("是否另存新檔?", vbYesNo)
If 是否另存新檔 = vbYes Then
File = Application.Range("D6")
SNo = Application.Range("L7")
Name = Application.Range("M7")
ChDir "D:\Account book\INV"
ActiveWorkbook.SaveAS Filename:=File & "_" & SNo & "_" & Name & ".xlsm"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=File & "_" & SNo & "_" & Name & ".pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End If
End Sub |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 7# GBKEE
感謝!成功了。
原檔名稱是inv.xlsm
當我完成資料時
如果我同時想留 "xlsm" & "pdf"
之後會有兩個檔案
INV11345-周依霖.xlsm
INV11345-周依霖.pdf
是否加入 "紅色的" ?
另外xName的x是否有意思的指示,用Name可以嗎?
Option Explicit
Sub PrintPDF()
Dim File_Name As String, xFile As String, xName As String
xFile = Range("D6")
xName = Range("M7")
File_Name = xFile & "-" & xName & ".xlsm"
File_Name = xFile & "-" & xName & ".pdf"
Do
File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name)
If File_Name = "" Then
Exit Sub
Else
If Dir(File_Name) <> "" Then
If MsgBox("檔案名稱經存在,覆蓋它", vbYesNo) = vbYes Then
Exit Do
Else
File_Name = ""
End If
End If
End If
Loop While Not UCase(File_Name) Like "*.xlsm"
Loop While Not UCase(File_Name) Like "*.PDF"
Application.DisplayAlerts = False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
xFile & "-" & xName & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Application.DisplayAlerts = True
End Sub |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 9# GBKEE
感謝,十分成功。
我的INV File是放於D:\Account book\INV\INV.xlsm
我自行加下“紅色“的要求,但是另存.pdf後,file依然跑了去“我的文件”資料夾內,請問我是否放錯了指令的位置呢?
另一個問題,今天發現大頭蝦的同事,每次發invoice的時候,經常忘記更改invoice no,所以同一個invoice no經常出現於不同的客戶名稱裡。
每次發單時,另存後都是格式 INV12345_會員編號1_客戶名稱1.pdf
到了下一張單時,她又忘了更改INV12345,因此會出現 INV12345_會員編號2_客戶名稱2.pdf
請問有沒有指令方法,在另存時,只針對Invoice no的重複作提示
'File_Name = xFile & "-" & xName & ".pdf"
ChDir "d:\Account book\INV\"
Do
File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name) |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 11# GBKEE
應該是:
發票編號_會員編號_會員名稱
INV12345_1122_周依霖.pdf (這發票成功列印及存檔)
但當另一位同事開新發票時,她又忘了更改發票編號只更新了會員資料但又直接列印及存檔
便會出現了相同的發票編號如下:
INV12345_1155_朱千雪.pdf
會員收費資料更新了,但是發票編號重複了
會員編號及會員名稱是會常常重複的,但發票編號不能重複,所以檔名能不能只針對發票編號不能重複作出提示 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 13# GBKEE
我加了在“紅色”那處,不能成功運作,我是否放錯位置或打錯甚麼?
Option Explicit
Sub Print_and_SavePDF()
Dim File_Name As String, xFile As String, xSNo As String, xName As String
xFile = Range("D6")
xSNo = Range("L7") 'xSNo 便是發票編號的位置
xName = Range("M7")
File_Name = xFile & "_" & xSNo & "_" & xName & ".pdf"
ActiveWorkbook.Save
ChDrive "D:\"
If Mid(CurDir, 1, 1) <> "d" Then ChDrive "d:\"
ChDir "d:\Account book\INV\"
If Dir("d:\Account book\INV\" & " xSNo " & "*.pdf ")<> "" Then
MsgBox "發票編號 已開出"
Exit Sub
Do
File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name)
If File_Name = "" Then
Exit Sub
Else
If Dir(File_Name) <> "" Then
If MsgBox("【注意】檔案名稱已經存在。是否要覆蓋它?如覆蓋它資料將會被更新。", vbYesNo) = vbYes Then
Exit Do
Else
File_Name = ""
End If
End If
End If
End If
Loop While Not UCase(File_Name) Like "*.PDF"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile & "_" & xSNo & "_" & xName & ".pdf", Quality:=xlQualityStandard _
, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Range("N13").Select
End Sub |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 15# GBKEE
成功運行,但是重複 發票編號 沒有被提示 |
|
|
|
|
|
|
|
- 帖子
- 26
- 主題
- 3
- 精華
- 0
- 積分
- 34
- 點名
- 0
- 作業系統
- OSX
- 軟體版本
- OSX
- 閱讀權限
- 10
- 註冊時間
- 2012-12-16
- 最後登錄
- 2014-2-7
|
回復 17# GBKEE
測試了幾次,依舊一樣,相同的發票編號可以重複存檔
INV12345_1122_周依霖.pdf
INV12345_1123_李子龍.pdf
INV12345_1124_朱正奇.pdf
感謝版大:D
由於發票編號是人打鍵入的,因此出錯是經常發生。
如果換另一個方式,加入自動編號,於儲存格內,即是每次另存新檔後,都會跳一個新的編號出來,便肯定不會出錯。 |
|
|
|
|
|
|
|