查看完整版本 : Excel Marco 問題求大神指導

thendless 2019-12-30 08:39 PM

Excel Marco 問題求大神指導

咁我寫左d Excel Marco, 主要係將d野print去指定既printer.
原本都好順, 但當用家格左一段時間, 唔知點解個print就唔work. 但其他既野又會照常run冇error, 淨係print唔到出野.
重新開個file又時又work 番, 有時又要重新開機先work番. 求大神指教... 以下係d code.


Sheets("Main").Select
    Rows("11:23").Select
    Selection.Copy
    Sheets("Record").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
    Sheets("Main").Select
    Range("B7").Select
    Application.CutCopyMode = False
    Range("C6").Select
    Selection.ClearContents
        oldprinter = Application.ActivePrinter
   
    For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error Resume Next
          Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"
    Next i
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Application.ActivePrinter = oldprinter
    ActiveCell.FormulaR1C1 = "Printed!"
    Range("C6").Select
    With Selection.Font
        .Color = -11489280
        .TintAndShade = 0
    End With
    Range("D6").Select

End Sub

alee001 2019-12-31 10:32 AM

Printer名稱可能不同
Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"

thendless 2019-12-31 01:05 PM

[quote]原帖由 [i]alee001[/i] 於 2019-12-31 10:32 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512435914&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
Printer名稱可能不同
Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":" [/quote]

感謝回覆.
個file係本身係成功用到架, 部部機都冇問題.
用家個file係長開, 但用幾個鐘之後, 佢就突然間冇error,冇先兆,冇異樣地print唔出野. :smile_27:
冇特定邊部機成日出事, 亦冇指定時間出事. 重新開個file有時都唔得, 但重新開機就次次都可以行得番.
所以應該唔關個printer名事? 如果係printer名唔岩應該開頭都唔會行得到架呵?
同埋我試過printer名唔岩既話, 佢應該係會print番去你default printer. 只不過係冇指定到個printer, 而唔會成張print唔見左, 個printer本身都冇唔見job既問題出現過之前... :smile_13:

alee001 2019-12-31 03:19 PM

有冇每個port no.(即係curNePrint) check吓得唔得?

thendless 2019-12-31 03:36 PM

[quote]原帖由 [i]alee001[/i] 於 2019-12-31 03:19 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512448538&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
有冇每個port no.(即係curNePrint) check吓得唔得? [/quote]

有呀, 所以寫左呢個去做, 由"00"試到"25"因為部部機都唔同.
應該夠cover喇掛...
奇怪在就係一段時間先至print唔出野... :smile_27:

    For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error Resume Next
          Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"
    Next i

煙民母親生賤種 2020-1-1 01:51 AM

[quote]原帖由 [i]thendless[/i] 於 2019-12-31 03:36 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512449489&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]


有呀, 所以寫左呢個去做, 由"00"試到"25"因為部部機都唔同.
應該夠cover喇掛...
奇怪在就係一段時間先至print唔出野... :smile_27:

    For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error Resume Next
          Applicatio ... [/quote]on error resume next 呢句野唔應該濫用。既然你 printing 時得時唔得,你應該 print 個 error code description 睇下咩事。

For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error  goto errHandler
          Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"
errHandler:
if err.number <> 0 then        
msgbox(Err.Description)
end if
Next i

thendless 2020-1-2 03:13 PM

" [quote]原帖由 [i]煙民母親生賤種[/i] 於 2020-1-1 01:51 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512471945&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
on error resume next 呢句野唔應該濫用。既然你 printing 時得時唔得,你應該 print 個 error code description 睇下咩事。

For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error  goto errHandler
          Applicati ... [/quote]

坦白講我都唔係咁叻, 呢條code我都係網上搵黎抄.
以我理解, 因為每部用家機o個部printer個"Ne"號碼都唔一樣, printer名就一樣. 所以用"on error resume next" 呢句黎試o個組號碼, 就變左每部機都可以用到. 我而家改左 "0 To 99" 睇下會唔會解決到.


我都試過師兄個方法, 但每一次會出error description同debug彈出黎. 我諗係"Ne00:"就已經出左error?
會唔會有方法可以試到"Ne00:"至到"Ne99:", 而真係搵唔到先好似師兄咁出error description呢?

xianrenb 2020-1-2 07:11 PM

[quote]原帖由 [i]thendless[/i] 於 2019-12-30 08:39 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512418398&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
咁我寫左d Excel Marco, 主要係將d野print去指定既printer.
原本都好順, 但當用家格左一段時間, 唔知點解個print就唔work. 但其他既野又會照常run冇error, 淨係print唔到出野.
重新開個file又時又work 番, 有時又要重新開機先work番. 求大神指教... 以下係d code.


Sheets("Main").Select
  ... [/quote]

看看以下有無用:
[url=https://stackoverflow.com/questions/5424932/how-to-determine-what-ne-port-the-adobe-pdf-printer-is-on]https://stackoverflow.com/questions/5424932/how-to-determine-what-ne-port-the-adobe-pdf-printer-is-on[/url]

煙民母親生賤種 2020-1-3 02:57 AM

[quote]原帖由 [i]thendless[/i] 於 2020-1-2 03:13 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=512535723&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
"

坦白講我都唔係咁叻, 呢條code我都係網上搵黎抄.
以我理解, 因為每部用家機o個部printer個"Ne"號碼都唔一樣, printer名就一樣. 所以用"on error resume next" 呢句黎試o個組號碼, 就變左每部機都可以用到. 我而家改左 "0 To 99" 睇下會唔會解決到.


我都試過師兄個方法, 但每一次會出error description同 ... [/quote]咩叫 debug 啊?debug 係未上 production 之前,找出問題所在。問題你都唔知在那裏,所以咪要 display 個 err.description 去找出來囉。:fst_016:

alee001 2020-1-4 09:08 PM

試吓唔用On Error Resume Next改用頭尾Application.EnableEvents=False/True

howevera 2020-1-10 01:51 PM

加一句, 睇下有冇改善


For i = 0 To 25
       curNePrint = Format(i, "00")
       On Error Resume Next
          Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"
        If Err.Number = 0 Then Exit For
Next i

ncream 2020-1-17 10:19 AM

Nexx,部部電腦都唔同。

正確做法,係Registry取得資料

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

[attach]10748509[/attach]

你個VBA 要GET (取得)這裡資料,就可以直接連上PRINTER,唔好用FOR 去撞。

[[i] 本帖最後由 ncream 於 2020-1-17 10:26 AM 編輯 [/i]]

darigold 2020-1-18 12:48 AM

Sigh
又有 跳過 programmers

[url]https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=6#pid413988140[/url]
[url]https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=7#pid414600141[/url][code]On Error Resume Next[/code]你們會後悔的⋯

煙民母親生賤種 2020-1-19 01:55 AM

[quote]原帖由 [i]darigold[/i] 於 2020-1-18 12:48 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=513178502&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
Sigh
又有 跳過 programmers

[url=https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=6#pid413988140]https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=6#pid413988140[/url]
[url=https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=7#pid414600141On]https://computer.discuss.com.hk/viewthread.php?tid=24362743&page=7#pid414600141On[/url] Error Resu ... [/quote]:fst_010::fst_010::fst_010::fst_010::fst_010:[b][size=5]乜你記住我講過乜架??[/size][/b] :fst_012::fst_012:
:fst_004::fst_004::fst_004:

thendless 2020-1-23 04:26 PM

[quote]原帖由 [i]ncream[/i] 於 2020-1-17 10:19 AM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=513148605&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]
Nexx,部部電腦都唔同。

正確做法,係Registry取得資料

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices

10748509

你個VBA 要GET (取得)這裡資料,就可以直接連上PRINTER,唔好用FOR 去撞。 ... [/quote]

感謝各位回覆.
亦非常同意各位講咁唔應該用"If Error Resume Next"呢一句. 因為真係搵到個原因, 係部電腦唔知點解斷左個printer, 而因為呢一句, 令到用家唔知道原來斷左. 當佢用番普通file>print 既話, 係會有error message話connect唔到printer.


ncream師兄, 我可以好似你咁講入到去你講既位置搵到個printer. 但可唔可以講得detail d我應該點寫? 其實我唔係做呢行, 我都唔係好識寫呢d, 初級班黎lol.

oldprinter = Application.ActivePrinter
   
    For i = 0 To 99
       curNePrint = Format(i, "00")
       On Error Resume Next
          Application.ActivePrinter = "\\hk-print01\HKHK_Printer15 on ne" & curNePrint & ":"
    Next i
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    Application.ActivePrinter = oldprinter

ncream 2020-1-23 11:09 PM

[quote]原帖由 [i]thendless[/i] 於 2020-1-23 04:26 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=513395778&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]

感謝各位回覆.
亦非常同意各位講咁唔應該用"If Error Resume Next"呢一句. 因為真係搵到個原因, 係部電腦唔知點解斷左個printer, 而因為呢一句, 令到用家唔知道原來斷左. 當佢用番普通file>print 既話, 係會有error message話connect唔到printer.


ncream師兄, 我可以好似你咁講入到去你講既位置搵到個prin ... [/quote]

我SEND個FILE比你。佢會顯示你Default printer,我會係CODE到話比你知點寫。

[attach]10770621[/attach]

[attach]10770622[/attach]

FILE:

[url=https://www.sendspace.com/file/kvk4z7]https://www.sendspace.com/file/kvk4z7[/url]

password 等收pm

[[i] 本帖最後由 ncream 於 2020-1-24 12:15 PM 編輯 [/i]]

thendless 2020-1-24 12:28 PM

[quote]原帖由 [i]ncream[/i] 於 2020-1-23 11:09 PM 發表 [url=https://computer.discuss.com.hk/redirect.php?goto=findpost&pid=513408028&ptid=28788580][img]https://computer.discuss.com.hk/images/common/back.gif[/img][/url]


我SEND個FILE比你。佢會顯示你Default printer,我會係CODE到話比你知點寫。

10770621

10770622

FILE:

[url=https://www.sendspace.com/file/kvk4z7]https://www.sendspace.com/file/kvk4z7[/url]

password 等收pm [/quote]

收到喇, 感激. 研究下先!
頁: [1]
查看完整版本: Excel Marco 問題求大神指導