krampaul82 发表于 2011-2-18 13:43:22

Vb到VBA

Option Explicit以下代码在visual Basic中可用,但我似乎无法在vba 2010中使用它;shell 32.dll“;别名;ShellExecuteA“;(ByVal hwnd As Long,ByVal lpszOp As String,ByVal lpszFile As String、ByVal lpszParams As String和ByVal lpszDir As String以及ByVal FsShowCmd As Long)只要公共函数OpenFile(ByVal FileName As String)一样长 OpenFile=ShellExecute [挂在这里];(0,“打开”,文件名,“C:\ALL\u pdf\u Cut\u Sheets\Actuators\”,1)
结束函数 OpenFile;C: \所有pdf\u Cut\u Sheets\Actuators\ms8105a1008.pdf“
结束Sub
任何受欢迎的想法…
标记。。。。。

Matt__W 发表于 2011-2-18 13:48:28

为了什么'值得一提的是,它在2008年运行良好 

krampaul82 发表于 2011-2-18 13:54:53

我似乎总是得到不正常的结果;我需要检查证明文件吗?

Matt__W 发表于 2011-2-18 14:06:04

我只检查了2008年的默认值。

Keith™ 发表于 2011-2-20 01:17:49

你在用什么操作系统?你以前用这个的时候是同一个吗?

krampaul82 发表于 2011-2-20 13:47:14

检查ShellExecute的返回值
如果成功,ShellExecute返回大于32的值,否则返回小于或等于32的错误值
错误代码:
http://msdn.microsoft.com/en-us/library/bb762153%28v=vs.85%29.aspx当Long=11时,Private Const SE\u ERR\u访问被拒绝,只要Long=5
Private Const SE\u ERR\u ASSOCINCOMPLETE,只要Long=27
Private Const SE\u ERR\u DDEBUSY,只要=30
Private Const SE_ERR_DDEFAIL,只要=29
Private Const SE\u ERR\u NOASSOC As Long=31
Private Const SE\u Error\u OOM As Long=8
Private Const SE\ u ERR\ u PNF As Long=3

krampaul82 发表于 2011-2-21 09:36:18

windows xp32位。最初的代码是用visual basic 6.0编写的,我试图让它在acad2010 vba(附加组件)中工作,它挂在openfile=ShellExecute(0,“Open”,FileName,“C:\gtc\u proj\2008\u Blocks\Valves\Honeywell\Product Link\,1)上 运行时错误表示49错误DLL调用对流
感谢您的帮助…马克

Keith™ 发表于 2011-2-21 10:32:44

 windows xp32位。最初的代码是用visual basic 6.0编写的,我试图让它在acad2010 vba(附加组件)中工作,它挂在openfile=ShellExecute(0,“Open”,FileName,“C:\gtc\u proj\2008\u Blocks\Valves\Honeywell\Product Link\,1)上 运行时错误表示49错误DLL调用对流
感谢您的帮助……在您方便的时候……标记它'这很奇怪
它在我的电脑中运行良好:XP SP3 32位+AutoCAD 2010

krampaul82 发表于 2011-2-21 11:34:36


It'这很奇怪
它在我的电脑中运行良好:XP SP3 32位+AutoCAD 2010我知道!我对vba中的其他东西有很多其他的怪癖(像这样的东西可以在其他人的机器上工作,但不是我的!)非常令人沮丧:realmad:我真的应该完全抛弃vba,但我有一个在vb(a)中建立的大量块库,我知道老板不会为vb.net程序掏钱 如果不是我,他们仍然在ACAD R13上
谢谢你的意见。马克。。。

Keith™ 发表于 2011-2-21 11:57:01

Net是一个免费下载的快速版本-但至少在你最新的评论中有一个线索,
糟糕的调用约定听起来像是变量类型在API调用中被破坏了。在.NET中,行为已经发生了变化,您不得不多次使用IntPtr,而不是长时间使用。
页: [1] 2
查看完整版本: Vb到VBA