返回列表 上一主題 發帖

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

回復 10# Blade
每次發單時,另存後都是格式 INV12345_會員編號1_客戶名稱1.pdf
到了下一張單時,她又忘了更改INV12345,因此會出現 INV12345_會員編號2_客戶名稱2.pdf
請問:為何會自動加1??


  1. Option Explicit
  2. Sub Ex()
  3.     ChDrive "C:\"            '轉換使用中的磁碟機
  4.     ChDir "C:\test"          '改變使用中目錄或檔案夾。
  5.     ChDir "D:\test"          '改變非使中磁碟機目錄或檔案夾
  6.     MsgBox CurDir            '傳回使用中磁碟機:的的路徑
  7.     ChDrive "D:\"            '轉換使用中的磁碟機
  8.     MsgBox CurDir            '傳回使用中磁碟機:的的路徑
  9.     '** 如這樣使用中的磁碟機不是d
  10.     If Mid(CurDir, 1, 1) <> "d" Then ChDrive "d:\"
  11.     ChDir "d:\Account book\INV\"
  12.    
  13.    
  14.    ' **** 或是加上路徑****
  15.     ActiveWorkbook.SaveAs Filename:="d:\Account book\INV\" & File_Name

  16.     File_Name = Replace(LCase(File_Name), "*.xlsm", ".dbf")  '副檔名替換為 "dbf"

  17.     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  18.         "d:\Account book\INV\" & File_Name, Quality:=xlQualityStandard, _
  19.         IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  20. '    ***************
  21. End Sub
複製代碼

TOP

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

TOP

回復 12# Blade
  1. If Dir("存放資料夾全部路徑\" & "[發票編號]" & "*.pdf ") <> "" Then
  2.         MsgBox "發票編號 已開出"
  3.         Exit Sub
  4.     End If
複製代碼

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

本帖最後由 GBKEE 於 2012-12-22 07:19 編輯

回復 14# Blade
  1. If Dir("d:\Account book\INV\*" &  xSNo  & "*.pdf ") <> "" Then
複製代碼

TOP

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

TOP

本帖最後由 GBKEE 於 2012-12-22 07:20 編輯

回復 16# Blade
  1.      If Dir("d:\Account book\INV\*" & xSNo  & "*.pdf ")<> "" Then
  2.      MsgBox "發票編號   "& xSNo&"   已開出"
  3.     Exit Sub
複製代碼

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

回復 18# Blade
上傳存檔這工作表,是程式碼 看看

TOP

本帖最後由 Blade 於 2012-12-22 01:05 編輯

回復 19# GBKEE
  1. Option Explicit

  2. Sub 另存新檔測試()
  3. Dim File_Name As String, xFile As String, xSNo As String, xName As String
  4.         xFile = Range("D6")
  5.         xSNo = Range("L7")
  6.         xName = Range("M7")
  7.                 File_Name = xFile & "_" & xSNo & "_" & xName & ".pdf"
  8.                                 ActiveWorkbook.Save
  9. ChDrive "D:\"
  10. If Mid(CurDir, 1, 1) <> "d" Then ChDrive "d:\"
  11. ChDir "d:\Account book\INV\"
  12. If Dir("d:\Account book\INV\*" & " xSNo " & "*.pdf ") <> "" Then
  13. MsgBox "發票編號   "&  xSNo &"   已開出"
  14. Exit Sub
  15.         End If
  16.           Do
  17.             File_Name = InputBox("另存新檔", "[檔案存檔]", File_Name)
  18.             If File_Name = "" Then
  19.                 Exit Sub
  20.             Else
  21.                 If Dir(File_Name) <> "" Then
  22.                     If MsgBox("【注意】檔案名稱已經存在。是否要覆蓋它?如覆蓋它資料將會被更新。", vbYesNo) = vbYes Then
  23.                         Exit Do
  24.                     Else
  25.                         File_Name = ""
  26.                     End If
  27.                 End If
  28.             End If
  29.                    Loop While Not UCase(File_Name) Like "*.PDF"
  30.         ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFile & "_" & xSNo & "_" & xName & ".pdf", Quality:=xlQualityStandard _
  31.         , IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

  32. End Sub
複製代碼

TOP

        靜思自在 : 【生命在呼吸間】佛陀說:「生命在呼吸間。」人無法管住自己的生命,更無法擋住死期,讓自己永住人間。既然生命去來這麼無常,我們更應該好好地愛惜它、利用它、充實它,讓這無常、寶貴的生命,散發它真善美的光輝,映照出生命真正的價值。
返回列表 上一主題