我想請問, 只有一張工作表, 想在欄位F4做流水編號, 編號: ECSDRD060XXX, XXX為流水號,
在印多份時會自動跳號, 例如三十張就到ECSDRD060030,下次例印會記住上次的編號到幾號,
這樣需求, 是要寫巨集或VBA ? 程式該如何撰寫? (EXCEL版本2010) 再麻煩各位高手協助解惑!!萬分感謝
網路上查到的程式
https://www.extendoffice.com/documents/excel/3606-excel-auto-increment-number-when-printing.html
不過上面程式是針對列印一次增加流水號,不是針對列印份數增加流水號,所以列印10份就要呼叫印表機10次!(沒印表機所以無法實測,您可以自己先試試看

所以我換個做法,列印10份程式會產生1~10.jpg檔案,每個圖片的F4都是累加的流水號。
之後只要同時選擇這10個jpg檔,按右鍵選擇列印,應該就可以一次列印所有份數了。
ps.對vba完全不熟,應該有更好的方法,就等其他大大提供了

以下程式只需要修改:
(1)第8行想要列印的範圍 =>A1:F10
Set rgExp = Range("A1", "F10")
(2)第10行jpg要存的目錄在哪? =>d:\test\
folder = "d:\test\"
1 |
Sub testPrint() |
shibuy wrote:
每個圖片的F4都是累加的流水號
有點好奇,當填入份數(10份),按下按鈕後,每份內容不是計數+1後直接送到印表機即可?還是再另存jpg?....然後再去找到jpg(檔案總管會開啟),全選列印?這樣不是多繞了一圈?呵。

shibuy wrote:
new_serial = Replace(ActiveSheet.Range("F4").Value, "ECSDRD060", "") + 1
剛開始執行的時候,這句如果會有問題(+1的效果無效),或許可以修改成:
new_serial = Val(Replace(ActiveSheet.Range("F4").Value, "ECSDRD060", "")) + 1
試試。
Der,misser1
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Range("A1") = Range("A1") + 1
Range("A2") = "ECSDRD060" & Range("A1").Text
End Sub
misser wrote:
有點好奇,當填入份數(恕刪)
misser 大大
因為沒有印表機所以我測試ActiveSheet.PrintOut的時候都會彈出印表機視窗,因此我認為應該是"每次"列印都會出現

我自己加上去的程式是每個流水號都生成圖檔,然後自動開啟目錄後再全選圖片列印即可。
但是實際上是不是也要跑10次印表機選項還是只有一次我也是不曉得


另外您提到下面程式在我的excel不加val()一樣可以+1是正常的,可能是我們的版本不同

我以為要用Cint()原來還有Val()可以用,謝謝提供資訊

new_serial = Val(Replace(ActiveSheet.Range("F4").Value, "ECSDRD060", "")) + 1
shibuy wrote:
所以我測試ActiveSheet.PrintOut的時候都會彈出印表機視窗
彈出視窗?不是直接送到印表機?(那個送印視窗應該會「立即關閉」,就跟你把圖檔直接存檔概念差不多)
我個人做過的直接列印,也是直接送印:
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
這樣就送印完成。(不會打開平時的列印預覽視窗,而是直接送印,有個很短暫的送印訊息,會自動關閉)
所以我才覺得,您調整流水號,再存jpg...循環的動作,可以直接改成:調整流水號,再直接送印(1份)....循環完成,送印表機列印也完成了(不用再開jpg,送印)
shibuy wrote:
另外您提到下面程式在我的excel不加val()一樣可以+1是正常的,可能是我們的版本不同
不好意思啦,因為我的環境執行時,確實是無作用(流水號不會增加),所以我才想說提醒一下,如果剛好樓主也遇到這情形,可以立刻調整解決。(我也是猜測您本身執行應該是沒遇到這問題)
我的版本是2010。
Der,misser1
內文搜尋

X