返回列表 上一主題 發帖

寫一個另存新檔的巨集,但是需要.pdf file,那麼應怎改寫?

寫一個另存新檔的巨集,但是需要.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

感謝!

另一個問題,如果檔案名稱已經存在,答"是"就如常蓋了舊的,但答"否"又怎寫呢?

2012-12-17_170134.jpg (11.11 KB)

2012-12-17_170134.jpg

2012-12-17_170049.jpg (10.49 KB)

2012-12-17_170049.jpg

TOP

回復 2# kimbal


    感謝!

另一個問題,如果檔案名稱已經存在,答"是"就如常蓋了舊的,但答"否"又怎寫呢?

TOP

回復  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

2012-12-18_154822.jpg (35.6 KB)

2012-12-18_154822.jpg

TOP

回復 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

TOP

回復 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)

TOP

回復 11# GBKEE
應該是:
發票編號_會員編號_會員名稱
INV12345_1122_周依霖.pdf (這發票成功列印及存檔)
但當另一位同事開新發票時,她又忘了更改發票編號只更新了會員資料但又直接列印及存檔
便會出現了相同的發票編號如下:
INV12345_1155_朱千雪.pdf
會員收費資料更新了,但是發票編號重複了
會員編號及會員名稱是會常常重複的,但發票編號不能重複,所以檔名能不能只針對發票編號不能重複作出提示

TOP

回復 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

TOP

回復 15# GBKEE
成功運行,但是重複 發票編號 沒有被提示

TOP

回復 17# GBKEE
測試了幾次,依舊一樣,相同的發票編號可以重複存檔
INV12345_1122_周依霖.pdf
INV12345_1123_李子龍.pdf
INV12345_1124_朱正奇.pdf

感謝版大:D

由於發票編號是人打鍵入的,因此出錯是經常發生。
如果換另一個方式,加入自動編號,於儲存格內,即是每次另存新檔後,都會跳一個新的編號出來,便肯定不會出錯。

2012-12-21_164758.jpg (84.12 KB)

2012-12-21_164758.jpg

TOP

        靜思自在 : 布施如播種,以歡喜心滋潤種子,才會發芽。
返回列表 上一主題