• 全部
...

Object variable or With block variable not set 错误帮忙指点下

gigimyl520 2010-09-28 02:22:04
Public Function PowerPointCreate() As String

On Error Resume Next
Err.Clear

PowerPointCreate = ""

'2010909追加ログ
Call cmlog.writeLog("PowerPointCreate処理开始", "PowerPointCreateLog")

If instanceFlg Then

Call cmlog.writeLog("instanceFlg is true exit function PowerPointOpen処理终了", "PowerPointCreateLog")

Exit Function
End If
'liyang 2008/10/22 追加します kill powerpoint start
Call Me.killPowerPoint
'liyang 2008/10/22 追加します kill powerpoint end
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Add
presenNo = pptApp.Presentations.count
slideNo = 0

'pptApp.ActiveWindow.View.GotoSlide Index:=pptApp.ActivePresentation.Slides.Add(Index:=1, Layout:=ppLayoutBlank)

If Err <> 0 Then
PowerPointCreate = "[Method:PowerPointCreate]PowerPointの作成に失败しました。" & Space$(1) & "Error=" & Error(Err)
Exit Function
End If
不知道以上代码哪里有问题还是我的环境的问题,觉得
Set pptApp = New PowerPoint.Application
pptApp.Visible = True
Set pptPres = pptApp.Presentations.Add
应该就是这3句中出错的 是个运行时错误,跑一条的数据没问题,多条的时候其中的某一条数据就抛出上面的错误内容了。请vb高手和ppt 高手指点下 谢谢。我也怀疑是不是有的变量设定不对,但是跑一条数据的时候是没问题的,多条数据生成ppt较慢的时候就出现这个异常了。
...全文
给本帖投票
5623 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
gigimyl520 2010-10-08
  • 打赏
  • 举报
回复
唉,不行了,这周末请个高手,过来帮我解决,希望他不要让我失望。
不过我估计也够呛。这周解决的话,就把分给大家。
gigimyl520 2010-10-07
  • 打赏
  • 举报
回复
感谢大家的关心,但是问题依然没有得到解决,最终在输入20条的时候出现了错误,还是set pptApp = CreateObject("PowerPoint.Application") (即原来的:Set pptApp = New PowerPoint.Application)的时候出现了错误,这次是我自己装的环境,在自己的环境下出现:ActiveX component can't create object错误信息。错误发现了是好事,但是真不明白该如何解决了,自己在这方面还是没有经验啊,不知道什么情况下会使得New PowerPoint.Application出错。因为是多条数据的循环操作,每条数据都会执行这个New PowerPoint.Application,情况就是有的能够很好的执行,有个别1条就出现了ActiveX component can't create object错误信息。请有经验的给点建议。
宝_爸 2010-09-29
  • 打赏
  • 举报
回复
另外,对于windows service来说,可以在onStart中sleep 30秒,在这30秒中,你可以通过Attache Process...到你的windows service进程中进行debug.
宝_爸 2010-09-29
  • 打赏
  • 举报
回复
兔子-顾问 2010-09-29
  • 打赏
  • 举报
回复
The remote server machine does not exist or is unavailable
目标目录错误,具体是那个主机不存在,ip地址写错?主机名错误?
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
通过对每条语句写log 发现如下log 大家帮忙指点下:
2010/09/28 11:01:46:PowerPointCreate処理New PowerPoint.Applicationの実行後エラーが発生 Error=The remote server machine does not exist or is unavailable
以上也就是在运行多条数据的时候et pptApp = New PowerPoint.Application 这句出的一个错误,注意是单条数据的时候是没有这个错误的,运行多条数据后 在New PowerPoint.Application 的时候出的错误,这个错误信息也不明白是什么意思。
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
嗯,谢谢你,我现在正在改成你说的,进行调试,看看能不能解决
鸭梨山大帝 2010-09-29
  • 打赏
  • 举报
回复
我这里只是个提议,毕竟未真正调试你的代码.

你可以尝试修改成我说的那样测试一下是否能够解决问题.
鸭梨山大帝 2010-09-29
  • 打赏
  • 举报
回复
是的,一切类的实例化都需要
dim objXX as objet
set objXX = CreateObject("XXXX.XXXX")

我之前用VB6,很少直接引入dll,一般都是CreateObject.
如果用到中间层,还需要用到

set rds = CreateObject("RDS.DataSpace")
Set obj = rds.CreateObject("XXXX.XXX",http://server)

这样来创建远程服务器上的对象.

[Quote=引用 15 楼 gigimyl520 的回复:]
想问下lost_painting pptApp 向你那样声明,那么我以前声明的pptPres As PowerPoint.Presentation也要向pptApp一样 声明成object么?麻烦了
[/Quote]
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
想问下lost_painting pptApp 向你那样声明,那么我以前声明的pptPres As PowerPoint.Presentation也要向pptApp一样 声明成object么?麻烦了
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
哦 ,谢谢lost_painting 我试试
还有findcaiyzh 所说的oWord.activeWindow是指的word开发么,不是很明白这句话
我是用vb6 做生成ppt文件的所以我写的是pptApp.activeWindow,
在这之前是用Private pptApp As PowerPoint.Application
Set pptApp = New PowerPoint.Application
声明的我想采用lost_paintingde的方法先试试
毕竟是在new的时候出的错误,另外我想问问lost_painting 是不是你以前有过这样的经验,
希望还有其他建设性的意见。
鸭梨山大帝 2010-09-29
  • 打赏
  • 举报
回复
不推荐直接
Set pptApp = New PowerPoint.Application
的方式,这个方式必须引入office的dll.这样的话,如果客户端的office版本跟你开发时引用的不一致就有问题.

推荐下面这种写法
dim pptApp as Object
set pptApp = CreateObject("PowerPoint.Application")

这样能减少开发时引入的dll与客户端dll版本不一致的问题
宝_爸 2010-09-29
  • 打赏
  • 举报
回复
下面这个说的更简单点

Basically, if you're automating Word from outside Word (from Access, or VB6, or wherever), all references to the Word object model need to be fully qualified. Every reference to a Word object needs to refer to either oWord directly, or refer to an object that refers to oWord in its turn (like oDoc in this case). For example, you cannot refer to Selection - it has to be oWord.Selection. Likewise ActiveWindow needs to be oWord.ActiveWindow. Etc etc.
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
如果是配置文件中的配置信息有错误的话,为什么跑1条的时候还没问题,还有次跑了4条吧,也没什么问题
但是我一连加了15条数据后就出现这样上述2个error了。如果我提供的信息不详细请告诉我。
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
谢谢你的建议,我正在查看客户发给我的日志,我在程序里的以上方法中的每个语句都写了log,多条数据跑的时候,有些数据是正常执行的,一共15条数据有5条数据在New PowerPoint.Application这句话之后出了error信息其中一个是The remote server machine does not exist or is unavailable 还有个error信息是ActiveX component can't create object我现在正在看程序,看为什么会出这2个错误。希望大家能够帮我查找,留意下。
pjw100 2010-09-29
  • 打赏
  • 举报
回复
不知道你哪些部门有和远程的主机进行连接,是否配置文件中的配置信息有写正确?

建议解决办法:
1。 先用客户说的那种情况,进行调试(最好你的Office版本和客户的一样),windows serveice调试要么看日志,要么到进程里面去调试。
2。装个虚拟机,模拟客户的环境,在虚拟机里面调试。
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
我也想debug下,但是在我的环境下,没有这样的错误
到了客户那里才出现这样的 错误的,我没有客户的环境
我只能在每一条语句下面打log,从log中看是这样的问题。
gigimyl520 2010-09-29
  • 打赏
  • 举报
回复
谢谢你的回答,虽然问题我还没解决。
我用的是vb6
你以前是不是也遇到过这样的问题?
gigimyl520 2010-09-28
  • 打赏
  • 举报
回复
关键是写成服务了,我自己做调试过,但是一条和多条的数据都没问题,
但是拿到客户那测试,一条数据没问题,多条数据的时候会有这样的错误。
郁闷的是我现在根本无法在我的测试环境下得到这样的错误。
通过在每条语句下面写log,发现在这个方法中会得到上述的错误。
兔子-顾问 2010-09-28
  • 打赏
  • 举报
回复
能调试么?错误时看看断点在哪。

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部