Office中国论坛/Access中国论坛

标题: 选择默认打印机的问题 [打印本页]

作者: JosephTan    时间: 2012-2-11 20:12
标题: 选择默认打印机的问题
[attach]48303[/attach]

我的附件是一个可以列出默认打印机并选择默认打印机的程序模块和一个窗体.

已经可以实用.
可是还不够完善.我目前只能做到重启access来达到改动默认打印机的目的.能否可以做到不需要重启就能修改到?我对windows script host的理解还不行.
作者: Grant    时间: 2012-2-12 00:42
给你做了些简化,还是睡觉了,没有细细去看不知道符合效果否

窗体部分
  1. Private Sub Combo75_AfterUpdate()
  2.    Call DefaultPrinter(Me.Combo75.Text)
  3. End Sub

  4. Private Sub Form_Open(Cancel As Integer)
  5.     Me.Combo75.RowSourceType = "Value List"
  6.    Me.Combo75.RowSource = GetPrinters
  7.    Me.Combo75 = prtDefaultIndex
  8. End Sub
复制代码
模块部分
  1. Public prtDefaultIndex As Long

  2. Public Function DefaultPrinter(PrinterName)

  3.     Dim Ofs As IWshNetwork_Class
  4.     Set Ofs = New IWshNetwork_Class
  5.     Ofs.SetDefaultPrinter (PrinterName)
  6.     DefaultPrinter = True

  7. End Function

  8. Public Function GetPrinters() As String
  9.     Dim i As Integer
  10.    
  11.     For i = 0 To Application.Printers.Count - 1
  12.         GetPrinters = GetPrinters & ";" & i & "," & Application.Printers(i).DeviceName
  13.         
  14.         If Application.Printer.DeviceName = Application.Printers(i).DeviceName Then
  15.             prtDefaultIndex = i
  16.         End If
  17.         
  18.     Next i

  19.     GetPrinters = Mid(GetPrinters, 2)

  20. End Function
复制代码
[attach]48305[/attach]
作者: JosephTan    时间: 2012-2-12 05:12
我试过了,不行.还是需要重启access
作者: JosephTan    时间: 2012-2-13 06:37
这个我试过了,在access没有关闭重启以前还是不能真正改动到默认打印机.
作者: JosephTan    时间: 2012-2-13 06:58
[attach]48311[/attach]因为我没法不重启access改默认打印机所以我在网上找了一个access重启模块加上去,在打印机重启组合框的update后事件调用重启模块进行重启.
不过我还是希望不重启就可以真正改到默认打印机.

作者: t小宝    时间: 2012-2-13 09:49
1楼的代码改成这样就可以了:

Private Sub Combo75_AfterUpdate()
DoCmd.Hourglass True
   DefaultPrinter (Me.Combo75)
DoCmd.Hourglass False

Dim prtDefault As Printer
Set Application.Printer = Application.Printers(CStr(Me.Combo75))
Set prtDefault = Application.Printer

End Sub

作者: kangking    时间: 2012-2-13 09:55
不知道你是要改变系统的默认打印机还是改变ACC默认的打印机?
作者: JosephTan    时间: 2012-2-13 10:12
kangking 发表于 2012-2-13 12:55
不知道你是要改变系统的默认打印机还是改变ACC默认的打印机?

系统的.
作者: Grant    时间: 2012-2-13 10:28
奇怪我用了,都不需要重启啊
作者: Grant    时间: 2012-2-13 10:29
你之前的确实是需要重启,我修改过后我这里一点就行,不需要重启
作者: JosephTan    时间: 2012-2-13 10:34
Grant 发表于 2012-2-13 13:29
你之前的确实是需要重启,我修改过后我这里一点就行,不需要重启

其实2个都可以改,不过2个都需要重启.
你改了以后打开control panel表面上是看到改了,不过只要你试一下打印还是用的原来那个,如果不重启access的话.
作者: Grant    时间: 2012-2-13 10:49
本帖最后由 Grant 于 2012-2-13 10:50 编辑

不需要重启Access,回帖后我又去测试了一遍,我是打开了打印机设置项看着变化的,默认打印机也跟随改变了
作者: JosephTan    时间: 2012-2-13 10:54
本帖最后由 JosephTan 于 2012-2-13 13:59 编辑

但是我这个确实不行,而且很确定是你那个文件.改了以后关了那个pop up,然后再打开那个pop up还是原来那个默认打印机,根本改不了.要看能不能改一定要试一下打印行不行.
作者: kangking    时间: 2012-2-13 10:56
JosephTan 发表于 2012-2-13 10:12
系统的.

改变系统的默认打印机没有做过。不过我认为改变系统的默认打印机的话,你在打印其它文件,比如WORD文件时你又得重新设置。因此我认为还是只改变ACC默认的打印机比较好。
请参考:
http://www.office-cn.net/thread-110461-1-1.html
作者: Grant    时间: 2012-2-13 11:11
你不会是想改Access默认打印吧,那方法错了,和改系统默认打印是两回事

改Access默认打印更简单了
  1. Dim prtDefault As Printer

  2. Set Application.Printer = Application.Printers(0)

  3. Set prtDefault = Application.Printer

  4. With prtDefault
  5.     MsgBox "Device name: " & .DeviceName & vbCr _
  6.         & "Driver name: " & .DriverName & vbCr _
  7.         & "Port: " & .Port
  8. End With
复制代码

作者: Grant    时间: 2012-2-13 11:20
Access每次打开都会读取一次系统默认打印机,所以就照成了你为什么需要一定重启一次ACCESS,你可以采用
更改Access默认的打印机,也可以更改系统默认打印机后,重启Access重新加载打印机或者再次更改Access默认打印机
作者: Grant    时间: 2012-2-13 11:37
上传一例子你参考

[attach]48318[/attach]
作者: JosephTan    时间: 2012-2-13 14:59
Grant 发表于 2012-2-13 14:37
上传一例子你参考

嗯.所以我在#5说我找到一个重启access的模块,整一块就可以解决.但是我就是不甘心嘛.我也不想改access的默认.
这里有把重启模块用上以后的例子.
[attach]48323[/attach]
作者: t小宝    时间: 2012-2-13 17:04
试了GG在17楼的例子,还是不行,代码有逻辑错误,prtDefaultIndex的值不是想要的值,
其实直接使用打印机名称就行了,不需要用公用变量保存打印机ID。
改变ACCESS默认打印机就一句代码:Set Application.Printer =Application.Printers("打印机名称")
我在6楼贴的也有多余,象下面就行了:
Private Sub Combo75_AfterUpdate()
DoCmd.Hourglass True
   DefaultPrinter (Me.Combo75)
DoCmd.Hourglass False

Set Application.Printer = Application.Printers(CStr(Me.Combo75))

End Sub

作者: JosephTan    时间: 2012-2-13 17:27
本帖最后由 JosephTan 于 2012-2-13 20:36 编辑

那个模块里面的comment我还没有删除呢,版权问题我是不会擅自删除的.
上面有那个人的博客吧.我没有记错的话.里面还有些特别的例子.(悄悄说,我有的东西也从这里拿来卖了)
怎么找到的这个模块?我用google找到的,平时不用百度的,我.
作者: yzt880    时间: 2012-12-26 19:51
看我修改的,不用重启就可以设定系统和程序使用默认打印机。
作者: yzt880    时间: 2012-12-26 19:51
看我修改的,不用重启就可以设定系统和程序使用默认打印机。
作者: 笑嘻嘻哦    时间: 2013-1-27 18:44
我家的打印机很正常啊


























作者: 笑嘻嘻哦    时间: 2013-1-30 21:00
打印机有什么好的效果呢


























欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3