標題:
出貨單合併列印輸出問題,有無直接操作方法,或需採用VBA解決。
[打印本頁]
作者:
Baracuda
時間:
2011-5-2 15:57
標題:
出貨單合併列印輸出問題,有無直接操作方法,或需採用VBA解決。
現有出貨單(一單號有多項產品要輸出),詳Sheet「輸出內容」
因為出貨當時,即需要即時印出來送給客戶。
Sheet 內容說明
「出貨單內容」:訂單要出貨的內容
「出貨單客戶」:訂單是那位客戶訂購的
「輸出內容」:要給Word、合併列印輸出用的
問題有3,如下,不求能夠完全解決
1.可否操作直接套印出貨單號、品名、數量、單價、金額,但同一張出貨單,只有一位訂購客戶,所以只要出現一次。
2.如果同時有3張出貨單要印,可否依出貨單號不同時,判斷需要換頁列印。
3.可否有當頁出貨單的合計數可以列印上去(這個如果不行,還可以自已加過手寫上去)
1.的部分比較需要做,因為手寫不快,容易錯。
2.至不濟,分批列印也還好
整個問題有點難度,如果不能全部解決,請問有無解題的方向指導,也很感謝。
作者:
mark15jill
時間:
2011-5-2 16:15
回復
1#
Baracuda
稍微看了一下...
我的能力不太高只能提供些簡單建議..
1的部份 如果照樓主所述的話 基本上 可以用篩選 將其區分出來...
如
甲客戶 10001001 A產品 4 5.18 21
甲客戶 10001001 B產品 3 45.75 137
甲客戶 10001001 D產品 6 14.93 90
甲客戶 10001001 E產品 2 28.34 57
甲客戶 10002002 A產品 3 5.18 16
丁客戶 10002001 H產品 7 12.96 91
丁客戶 10002001 J產品 9 90.58 815
丁客戶 10002001 C產品 6 21.05 126
這樣下去區分..
作者:
Baracuda
時間:
2011-5-3 16:34
mark15jill 謝謝,這個大概只能謝謝了。
作者:
Baracuda
時間:
2011-5-3 16:38
一般而言,在版面掛了這些時間,如果沒人有回,我推定就沒救了。
我想出來的方法是
1.請人寫 Customer-maid 程式。
2.用Excel 當做 word 用,由 Excel 做,從Sheet1做到 Sheet2去。
我決定採用2法先做一下,看狀況如何。有瓶頸再 divide 出來,請版上大家來幫忙 Conquer.
作者:
hugh0620
時間:
2011-5-3 17:00
本帖最後由 hugh0620 於 2011-5-3 17:17 編輯
回復
3#
Baracuda
這個問題~大概可以幫你解決~
不過有點需要澄清一些問題
問題有3,如下,不求能夠完全解決
1.可否操作直接套印出貨單號、品名、數量、單價、金額,但同一張出貨單,只有一位訂購客戶,所以只要出現一次。
2.如果同時有3張出貨單要印,可否依出貨單號不同時,判斷需要換頁列印。
Q:樓主的意思是否只要出貨單號不要樣就列印一張新的~ 不用一張列印很多出貨單號??
3.可否有當頁出貨單的合計數可以列印上去(這個如果不行,還可以自已加過手寫上去)
A:這個問題比較簡單唷~ 並不困難
樓主~ 有看過您WORD檔的輸出範本~ 如果是這樣~ 建議您就直接在EXCEL做輸出列印的東作~
反而會更簡單一點
如附件的方式是否可以滿足您的需求呢?? (若可以才來撰寫程式碼)
[attach]5950[/attach]
作者:
mark15jill
時間:
2011-5-3 17:22
mark15jill 謝謝,這個大概只能謝謝了。
Baracuda 發表於 2011-5-3 16:34
不好意思 能力不足 僅能提供簡易建議...
我是想如果不是說 超級急件(就是短時間要) 的話 倒是可以用以下方法...
用vba 將篩選出來的資料 丟去一個固定格式的excel檔案(預先就要建立好)
這樣的話 假使固定格式確定可以印出樓主想要的資料的話
就比較好辦... 如果不行 那 可能還得請 論壇的壹些神人出馬了+.+
ps 對於樓主提到的 “ 在版面掛很多天的話 沒人回應就是沒救”
關於這點,我只能說 能的話 除了在這提問外 可以去google 找壹些相關的方式
並不是說這邊怎樣 而是 有些時候 自己找的 反而比較知道怎去處理...
作者:
Hsieh
時間:
2011-5-3 23:59
回復
4#
Baracuda
這樣用合併列印好像不是很合適
直接用EXCEL輸出出貨單比較簡單
Sub ex()
Dim Ar(), A As Range, C As Range
With Sheet2
For Each A In .Range(.[A2], .[A65536].End(xlUp))
With Sheet1
For Each C In .Range(.[A2], .[A65536].End(xlUp))
If C = A Then
ReDim Preserve Ar(s)
Ar(s) = Array(A.Offset(, 1).Value, A, C.Offset(, 1).Value, C.Offset(, 2).Value, C.Offset(, 3).Value, C.Offset(, 4).Value, C.Offset(, 5).Value)
s = s + 1
End If
Next
End With
With Sheet5
i = 0: .[F3] = A: .[B5:F9] = ""
Do Until i > UBound(Ar)
r = i Mod 5
.Cells(r + 5, 2).Resize(, 5) = Array(Ar(i)(2), Ar(i)(3), Ar(i)(4), Ar(i)(5), Ar(i)(6))
If r = 4 Or i = UBound(Ar) Then
.[F10] = r + 1 & "筆共" & s & "筆"
.PrintPreview
.[B5:F9] = ""
End If
i = i + 1
Loop
End With
With Sheet3 '寫入輸出內容工作表,若不採用合併列印可刪除此區段
.[A65536].End(xlUp).Offset(1).Resize(s, 7) = Application.Transpose(Application.Transpose(Ar))
End With
s = 0: Erase Ar
Next
End With
End Sub
複製代碼
[attach]5955[/attach]
作者:
Baracuda
時間:
2011-5-4 10:21
hugh0620謝謝,格式是小事,大概都可以做出來。
作者:
Baracuda
時間:
2011-5-4 10:23
Hsieh版主:
我有試過你的東西,資料可以做出來。雖然我還不是很完全明白內容。
我寫的VBA一定是沒有你的精簡。
謝謝你的回答,我省去不少時間發展我的 VBA。
作者:
Baracuda
時間:
2011-5-5 13:41
Hsieh超級版主你真的很神,我把整個內容看完了。
你的VBA,還有考慮到超過5筆列印上限的問題。
其他一些諸如要累計、格式…都算小問題。
你的資料中,有個地方我要請教你
.Cells(r + 5, 2).Resize(, 5) =(Ar(i)(2), Ar(i)(3), Ar(i)(4), Ar(i)(5), Ar(i)(6))
這個好像是2維陣列的方式,你是不是用陣列Ar()包陣列的方式(另外的元素2~5,0為訂購客戶的名稱,1是出貨單號)。
這個方式在這�� Work,只是我沒看過有人這樣用。
作者:
GBKEE
時間:
2011-5-5 14:13
這個方式在這�� Work,只是我沒看過有人這樣用
可搜尋
Array
看看
作者:
Baracuda
時間:
2011-5-5 14:52
GBKEE版主
一般 Array2維陣列用法是Ar(i,2)但這�堨峈漪OAr(i)(2)。
這個語法我沒看過,所以想跟他確定一下。
網路上我有 Google 過,量太大,不容易找這個特定的語法。
Hsieh版主有點是「一招包一路」的方式。
作者:
GBKEE
時間:
2011-5-5 15:51
回復
12#
Baracuda
是一維陣列, 非二維陣列.
Sub Ex()
Dim Ar(2), i%, y%, a
Ar(0) = Array(1, 2, 3, 4)
Ar(1) = Array("A", "B", "C", "D")
Ar(2) = Array("甲", "乙", "丙", "丁")
For i = 0 To UBound(Ar)
For y = 0 To UBound(Ar(i))
[a1].Offset(i, y) = Ar(i)(y)
Next
Next
End Sub
複製代碼
作者:
Baracuda
時間:
2011-5-6 10:04
GBKEE版主,謝謝。這樣我知道這個陣列的語法了。
作者:
user999
時間:
2012-5-9 10:26
請問版主:
若列印一式三聯,如出貨單 表格略有不同,內容一樣列印三張 一張收執聯,一張留底聯,一張存查,該如何修改,謝謝!
作者:
zachary
時間:
2015-9-14 09:32
找了好久,終於找到類似的解決方法
真是受教了~
作者:
aevilwitch
時間:
2016-9-9 08:57
回復
7#
Hsieh
超好用的....套一個空白表就可以印出所要的表單
比連結到WORD做合併列印還贊
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)