以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]服务器出现意外情况  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116388)

--  作者:lzzhx
--  发布时间:2018/3/23 17:13:00
--  [求助]服务器出现意外情况
[求助]服务器出现意外情况。(异常来自  HRESULT:0x80010105(RPC_E_SERVERFAULT))

我用的是office2007,以前一直都是好的,现在突然出现这个故障了,office重装了好几遍还是解决不了,该如何办?

--  作者:有点甜
--  发布时间:2018/3/23 17:19:00
--  

你执行什么代码后出现的错误?贴出来看看。

 

调出你任务管理器,把所有的excel进程都结束后,再测试代码。

 

如果还是不行,加入msgbox,定位是哪句代码出错导致的错误。


--  作者:lzzhx
--  发布时间:2018/3/23 17:35:00
--  
把所有的excel进程都结束后,再执行还是不行,同时又保留下了一个进程。
我加消息框再试试

--  作者:有点蓝
--  发布时间:2018/3/23 20:48:00
--  
代码用try catch包起来


--  作者:lzzhx
--  发布时间:2018/3/25 9:52:00
--  
代码如下,请老师看看,消息框452弹出后再关闭,就出现“服务器出现意外情况”  的对话框 ,关闭后就继续弹出消息框98

Dim e As Object = args(0)
Dim tb As Table = Tables(args(1))
Dim delfile As Boolean = True
Dim zdmc As String
Dim MyDate As Date = Functions.Execute("SQLTIME")
Select Case e.StripItem.Name
    Case "打印","预览"
        Dim tp As Boolean = False
        Dim dpi = basemainform.CreateGraphics.dpiX
        Dim sz() As String
        If tb.Cols.Contains("部门编号") = True Then
            sz = Functions.Execute("dwcjgq",tb.Current("部门编号")).split("|")
        End If
        Dim mb,str,tm,fl As String
        \'----------------------------------------------------------------------------------------------------
        \'选择模板
        If tb.Cols.Contains("审核人") = True AndAlso tb.Current("审核人").trim(" ") <> "" Then
            mb = "_已审核"
        End If
        Select Case tb.name
            Case "房屋春检表"
                str = ProjectPath & "Attachments\\报表模板\\房屋春检调查表模板.xls"
                tm = str.SubString(0,str.Length-4) & mb & str.SubString(str.Length-4,4)   \'指定模板文件
        End Select
        If FileSys.FileExists(tm) = False Then
            Messagebox.Show("报表模板文件【" & tm & "】不存在 !" & vblf & "请联系系统超级管理员 !","提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        \'----------------------------------------------------------------------------------------------------
        \'根据不同类型的模板,选择不同的程序段
        If tm.EndsWith(".xls") Then
            fl = ProjectPath & "Attachments\\报表模板\\$$$临时文件.xls" \'指定目标文件
            If FileIsOpened(fl)= True Then
                ShowAppWindow("$$$临时文件.xls",5)  \'关闭打开的文件
            End If
            Dim App As MSExcel.Application
            Dim Wb As MSExcel.WorkBook  
            Dim Ws As MSExcel.WorkSheet 
            Dim Book As New XLS.Book(tm)  
            try
                \'对标记进行更新
                Book.Marks.Add("tihuan单位简称",sz(1))
                Book.Marks.Add("tihuan所属车间",sz(3))
                Book.Marks.Add("tihuan所属工区",sz(5))
                Book.Marks.Add("tihuandayingren",_UserName)
                Book.Marks.Add("tihuandayingshijian",Format(Functions.Execute("SQLTIME"),"yyyy年MM月dd日"))
                Book.Build() \'生成报表
                Book.Save(fl) \'保存工作簿
                ShowAppWindow("$$$临时文件.xls",5)  \'关闭打开的文件
MessageBox.Show(45)
                Dim Sheet As XLS.Sheet = Book.Sheets(0)
                Dim tpcs() As String  \'图片参数
                Dim file As String
                Dim img As image
MessageBox.Show(451)
                app = New MSExcel.Application
MessageBox.Show(452)  \'此消息框弹出后再关闭 \'执行到这儿出错?????????????????????????????????????????????????????????????????????????????
                wb = app.WorkBooks.Open(fl)  
MessageBox.Show(453)
                ws = wb.WorkSheets(1)
MessageBox.Show(46)

MessageBox.Show(47)
                app.DisplayAlerts = False  \'每次出现需用户应答的消息时,Microsoft Excel将选择默认应答
                wb.saved = True
                app.visible = True
MessageBox.Show(48)
                ShowAppWindow("$$$临时文件.xls",2)   \'查找指定标题的外部应用程序窗口,并显示?隐藏或关闭之.  2-最大化显示
                If e.StripItem.Name = "预览" Then
MessageBox.Show(49)
                    Ws.PrintPreview
MessageBox.Show(491)
                Else
MessageBox.Show(50)
                    Ws.PrintOUT
MessageBox.Show(51)
                End If
            catch ex As exception
                MessageBox.Show(ex.message,"提示", MessageBoxButtons.OK, MessageBoxIcon.Error)
            finally
                App.Quit
            End try
MessageBox.Show(98)
        End If
        \'----------------------------------------------------------------------------------------------------
        \'删除临时文件
        Do While True
            If delfile = True Then
                If FileSys.FileExists(fl) Then
                   try
                       io.File.delete(fl)
                   catch ex As exception
                       application.Doevents
                   End try
                Else
                    Exit Do
                End If
            End If
        Loop
End Select
\'****************************************************************************************************

--  作者:有点甜
--  发布时间:2018/3/25 17:00:00
--  

代码不应该有问题,实例发上来测试。

 

如果不能发实例,你删减代码(把代码精简到最简),看哪里开始报错。


--  作者:lzzhx
--  发布时间:2018/3/26 7:50:00
--  
app.visible = True放到ws = wb.WorkSheets(1)前面就好了,但是什么原因却不知道 。
[此贴子已经被作者于2018/3/26 7:51:01编辑过]

--  作者:有点甜
--  发布时间:2018/3/26 9:00:00
--  

那就试试改成这样

 

wb = app.WorkBooks.Open(fl)  

ws = wb.WorkSheets(1)
ws.Select

--  作者:lzzhx
--  发布时间:2018/3/27 15:12:00
--  
改成这样还是原来的错误
--  作者:有点甜
--  发布时间:2018/3/27 15:25:00
--  
以下是引用lzzhx在2018/3/27 15:12:00的发言:
改成这样还是原来的错误

 

那没办法了。如果你修改后可以,那就好。不然,就做个实例发出来测试一下。