确定程序ID
是否可以通过了解我们从VBAIDE访问的库来确定prog-id的名称?我试图从一些VBA代码中学习,更准确地将它们转换为lisp代码。
问题是这样的:
案例#1
假设您在excel应用程序中访问VBAIDE,但是如何发现他使用的应用程序的prog-id是“Excel.Application”?
所以下次你在其他应用程序中使用VBA时,你会知道吗?
例如,使用Word中的VBA来操作Excel,反之亦然。
案例#2
因为在我试图理解的一些代码中,这家伙只是以:
' Reference required: "VBE - Tools - References - Acrobat"
Dim AcroApp As New Acrobat.AcroApp, PartDocs() As Acrobat.CAcroPDDoc
开头,这真的让我感到困惑,因为VBA代码缺少CreateObject函数,在LISP中将是(vlax-create-object progid):
CreateObject("progid")
我猜他访问了Acrobat Applicaiton,为此我不知道prog-id,我依靠运气找到正确的对象, 通过使用M.Puckett的_FindProjIDs子foo。
**** Hidden Message *****
对象。ProgID
https://msdn . Microsoft . com/en-us/library/aa 263181(v = vs . 60)。aspx
但是为了帮助您回答更大的问题:
您有几个“访问
”的选项。你可以使用“COM对象”或“自动化”(注意:`自动化'是` COM '光。)你可能想深入研究一下“自动化”。
在谷歌上快速搜索后,我找到了这个,它应该可以帮助你想象你在VBA是如何“访问东西”的。
http://access . mvps . org/access/modules/MDL 0006 . htm 经过进一步的搜索(决定在wikipedia上为你找到一些东西)。
https://en.wikipedia.org/wiki/OLE_Automation
另外,这里有一个链接,我已经将您可以从中收集信息的主题标记为书签。
https://support.microsoft.com/en-us/help/196776/office-automation-using-visual-c 谢谢你,约翰!- 我会花一些时间阅读你的第二篇文章的链接。但是出现了一个问题,关于你的第一篇文章object。ProgID来自引用:“返回由 VBControl 对象表示的控件的 ProgID(编程 ID),执行测试:Sub Test()。
设置 x = 新的 AcroApp '将其作为参考包含在内,它是该(Acrobat) 库下的成员的对象。
MsgBox (x.GetLanguage) '。
MsgBox (x.progID) '。
结束子。
如果'AcroApp'没有这个属性,那么什么是VBControl对象?后来我发现了这一点但是在我的模块(来自Excel的VBAIDE)中,定义“VBControl”是无法识别的。任何人都可以提供示例如何从此类对象中提取ProgID属性?。
它可能是Accrobat。不确定我的头顶。我会尝试用Outlook或其他东西做同样的事情。
>VBControl对象
*Pthhh!*我不记得了,但我认为这更通用,例如与表单上的内容有关。就像从列表框对象获取计数一样。
...微软的措辞很好,不是吗;他们给一切都一个超级模糊的术语。
(_ FindProjIDs " ACR * ")
(" ACR pdf。pdf . 1 ")
(setq BurtLancaster(vlax-create-object " ACR pdf。pdf . 1 "))
#
(vlax-dump-OBJECT burtlancester t)
;IAcroAXDocShim: IAcroAXDocShim接口
;属性值:
;messageHandler = nilsrc = " "
;支持的方法:
;exec command(1)
;get versions()
;goBackwardStack()
;goForwardStack()
;gotoFirstPage()
;gotoLastPage()
;gotoNextPage()
;gotoPreviousPage()
;LoadFile(1)
;post message(1)
;print()
;print all()
;printAllFit(1)
;print pages(2)
;printPagesFit(3)
;printWithDialog()
;setCurrentHighlight(4)
;setcurrenthighlight(4)
;setCurrentPage(1)
;setLayoutMode(1)
;setNamedDest(1)
;setPageMode(1)
;setShowScrollbars(1)
;setShowToolbar(1)
;set view(1)
;setViewRect(4)
;setview scroll(2)
;set zoom(1)
;setZoomScroll (3) 太奇怪了!在上一篇文章中按“发送”时,立即回复了Adobe的一封电子邮件:“整合在线和离线数据的艺术”。 谢谢Michael,我最近找到了那个对象,但是觉得prog-id的名字很奇怪——所以决定问问是否有其他途径来研究progid(通过了解库)。无论如何,如果有人对我想翻译成LISP的内容感兴趣,这是http://www.vbaexpress.com/forum/showthread.php? ZVI:2013-08-2747310-Need-code-to-merge-PDF-files-in-a folder-using-adobe-acrobat-X 。
需要参考:VBE-Tools-References-Acrobat 它将提供额外的答案,而不需要ghostscript或任何其他东西(如果已经安装了Acrobat),那可能是你的联邦调查局人员,电子邮件。
不客气。有趣的链接(和网站)。如果我没有一百个不同的大头针悬在空中,我会很想把它“Puckettize”(我的同事这么叫它)。回复:联邦调查局:
现在想知道“我的Puckett中有一些工具”是否是其中之一。
顺便说一句,我似乎需要这两个:
(setq AcroApp (vlax-get-or-create-object "AcroExch.App"))
(setq PartDocs (vlax-get-or-create-object "AcroExch.PDDoc"))
我非常接近翻译VBA代码,(好吧,不是100%的翻译,因为我不明白他如何将PartDocs视为一个集合,当它不是一个集合时)。
页:
[1]
2