Foxtable(狐表)用户栏目专家坐堂 → word vba 怎么无法打印出来文件呢?


  共有3804人关注过本帖树形打印复制链接

主题:word vba 怎么无法打印出来文件呢?

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
word vba 怎么无法打印出来文件呢?  发帖心情 Post By:2021/7/2 17:04:00 [显示全部帖子]

word vba 怎么无法打印出来文件呢?麻烦老师帮忙看看!

Dim dy As WinForm.ComboBox = e.Form.Controls("打印机")
Dim t3 As WinForm.TextBox = e.Form.Controls("单元格行")
Dim t4 As WinForm.TextBox = e.Form.Controls("单元格列")
Dim t5 As WinForm.TextBox = e.Form.Controls("文件目录")
Dim t6 As WinForm.TextBox = e.Form.Controls("单元格新值")
Dim t7 As WinForm.TextBox = e.Form.Controls("运行状态")
Dim js As WinForm.Label = e.Form.Controls("计数")
Dim wj As WinForm.ComboBox = e.Form.Controls("文件后缀")
Dim abc As Integer= 0
Dim dt = t7.BaseControl
Dim App As New MSWord.Application
If dy.text=""then
    MessageBox.Show("请选择打印机!")
Else
    If t5.value="" Then
        MessageBox.Show("请输入文件所在目录")
    Else
        For Each File As String In FileSys.GetFiles(t5.value)
            Dim ifo As new FileInfo(File)
            If ifo.Name.Contains("~$") Then
            Else
                If ifo.Extension.Contains(wj.text) Then
                    Dim doc As Object = app.Documents.Open(file)
                    app.ActiveWindow.Selection.WholeStory
                    doc.PrintOut(ActivePrinter:=dy.text)
                    abc=abc+1
                    App.Quit
                    js.Text= "已完成" & abc & "件/次!"
                    t7.Text= t7.Text & vbcrlf & "【" & ifo.Name & "】记录,已加入打印队列!"
                    t7.SelectionStart = t7.Text.Length
                    dt.ScrollToCaret
                    Application.DoEvents
                End If
            End If
            Dim sc As WinForm.RadioButton = e.Form.Controls("打印后是否删除文件")
            If sc.Checked=True
                If FileSys.FileExists(File) Then '如果指定的文件存在
                    FileSys.DeleteFile(File,2,2) '则彻底删除之
                End If
            End If
        Next
    End If
End If

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)看不出什么问题,看看打印执行没有ms...  发帖心情 Post By:2021/7/2 17:42:00 [显示全部帖子]


msgbox(1)
doc.PrintOut(ActivePrinter:=dy.text)
msgbox(2)
两个都没有弹出来哦 也没有打印出来

是不是msword  vba代码没有使用对呢?

会报错:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,窗口1,Button2,Click
详细错误信息:
未找到类型“DocumentClass”的公共成员“PrintOut”。
[此贴子已经被作者于2021/7/2 18:27:49编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2021/7/3 10:38:00 [显示全部帖子]

怎么修改成msword呢?

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)哦,看错了,试试    ...  发帖心情 Post By:2021/7/3 11:44:00 [显示全部帖子]

老师  现在是提示

未找到类型“DocumentClass”的公共成员“ActivePrinter”。

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)app.ActivePrinter = dy.text  发帖心情 Post By:2021/7/3 12:31:00 [显示全部帖子]

现在可以打印了  但是指定文件夹下 如果有多个word文件  只能正常打印一个  其他的就提示如下错误:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,窗口1,Button2,Click
详细错误信息:
异常来自 HRESULT:0x800A16C1

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,窗口1,Button2,Click
详细错误信息:
被呼叫方拒绝接收呼叫。 (异常来自 HRESULT:0x80010001 (RPC_E_CALL_REJECTED))

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)App.Quit放到最后一行  发帖心情 Post By:2021/7/3 18:13:00 [显示全部帖子]

老师  现在代码如下   还是没有成功实现 所有符合类型的文件实现打印

Dim dy As WinForm.ComboBox = e.Form.Controls("打印机")
Dim t5 As WinForm.TextBox = e.Form.Controls("文件目录")
Dim js As WinForm.Label = e.Form.Controls("计数")
Dim wj As WinForm.ComboBox = e.Form.Controls("文件后缀")
Dim abc As Integer= 0
Dim App As New MSWord.Application
If dy.text=""then
    MessageBox.Show("请选择打印机!")
Else
    If t5.value="" Then
        MessageBox.Show("请输入文件所在目录")
    Else
        For Each File As String In FileSys.GetFiles(t5.value)
            Dim ifo As new FileInfo(File)
            If ifo.Name.Contains("~$") Then
            Else
                If ifo.Extension.Contains(wj.text) Then
                Dim doc As Object = app.Documents.Open(file)
                app.ActiveWindow.Selection.WholeStory
                app.ActivePrinter = dy.text
                abc=abc+1
                App.Quit
                End If
            End If   
        Next
    End If
End If



 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)懂不懂什么叫最后一行?……  &...  发帖心情 Post By:2021/7/5 9:06:00 [显示全部帖子]


放在最后一行的话  程序直接无打印
Dim dy As WinForm.ComboBox = e.Form.Controls("打印机")
Dim t5 As WinForm.TextBox = e.Form.Controls("文件目录")
Dim wj As WinForm.ComboBox = e.Form.Controls("文件后缀")
Dim abc As Integer= 0
Dim App As New MSWord.Application
If dy.text=""then
    MessageBox.Show("请选择打印机!")
Else
    If t5.value="" Then
        MessageBox.Show("请输入文件所在目录")
    Else
        For Each File As String In FileSys.GetFiles(t5.value)
            Dim ifo As new FileInfo(File)
            If ifo.Name.Contains("~$") Then
            Else
                If ifo.Extension.Contains(wj.text) Then
                Dim doc As Object = app.Documents.Open(file)
                app.ActiveWindow.Selection.WholeStory
                app.ActivePrinter = dy.text
                
                End If
            End If   
        Next
    End If
End If
App.Quit




Dim dy As WinForm.ComboBox = e.Form.Controls("打印机")
Dim t5 As WinForm.TextBox = e.Form.Controls("文件目录")
Dim wj As WinForm.ComboBox = e.Form.Controls("文件后缀")
Dim abc As Integer= 0
Dim App As New MSWord.Application
If dy.text=""then
    MessageBox.Show("请选择打印机!")
Else
    If t5.value="" Then
        MessageBox.Show("请输入文件所在目录")
    Else
        For Each File As String In FileSys.GetFiles(t5.value)
            Dim ifo As new FileInfo(File)
            If ifo.Name.Contains("~$") Then
            Else
                If ifo.Extension.Contains(wj.text) Then
                Dim doc As Object = app.Documents.Open(file)
                app.ActiveWindow.Selection.WholeStory
                app.ActivePrinter = dy.text
                App.Quit
                End If
            End If   
        Next
    End If
End If

不放在最后的话   程序提示如下错误:
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,窗口1,Button2,Click
详细错误信息:
RPC 服务器不可用。 (异常来自 HRESULT:0x800706BA)

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)根本没有调用打印的代码,打印什么?...  发帖心情 Post By:2021/7/5 10:41:00 [显示全部帖子]

谢谢老师   现在可以了   不好意思啊   遗漏了打印代码
Dim dy As WinForm.ComboBox = e.Form.Controls("打印机")
Dim t5 As WinForm.TextBox = e.Form.Controls("文件目录")
Dim wj As WinForm.ComboBox = e.Form.Controls("文件后缀")
Dim abc As Integer= 0
Dim App As New MSWord.Application
If dy.text=""then
    MessageBox.Show("请选择打印机!")
Else
    If t5.value="" Then
        MessageBox.Show("请输入文件所在目录")
    Else
        For Each File As String In FileSys.GetFiles(t5.value)
            Dim ifo As new FileInfo(File)
            If ifo.Name.Contains("~$") Then
            Else
                If ifo.Extension.Contains(wj.text) Then
                    Dim doc As Object = app.Documents.Open(file)
                    app.ActiveWindow.Selection.WholeStory
                    app.ActivePrinter = dy.text
                    doc.PrintOut()
                    
                End If
            End If
        Next
    End If
End If
App.Quit

 回到顶部