gpt4 book ai didi

vba - 将 VBA 代码移动到独立的 VBS 文件

转载 作者:行者123 更新时间:2023-12-04 22:05:09 24 4
gpt4 key购买 nike

我在 excel vba 中有一个宏,它运行一个 shell 来通过命令行执行一个简单的 pdf 编辑器,导出页面名称和编号的列表,搜索关键字以找到我们想要的页面,获取页面编号,然后提取pdf文件中的该页面。

我已经意识到这个宏作为一个独立的实体会更好,并且想知道从 excel 中取出代码并从 .vbs 文件运行它需要什么。

我尝试直接复制和粘贴,它不喜欢第一行单词“As”中的字母“A”。

Sub PDF_GetUFPlan()

Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
Dim errorCode As Integer

wsh.Run "C:\Users\johnmcs\Desktop\pdftk.exe C:\Users\johnmcs\Desktop\FULL.PDF burst output C:\Users\johnmcs\Desktop\output.txt", windowStyle, waitOnReturn

Dim hf As Integer: hf = FreeFile
Dim lines() As String, i As Long

Open "C:\Users\johnmcs\Desktop\doc_data.txt" For Input As #hf
lines = Split(Input$(LOF(hf), #hf), vbNewLine)

Close #hf

For i = 0 To UBound(lines)

If InStrRev(lines(i), "UPPER FLOOR PLAN") > 0 Then

For x = i To UBound(lines)
If InStrRev(lines(x), "BookmarkPageNumber: ") > 0 Then

Dim UFpagenum As Integer, PagenumPosi As Integer
PagenumPosi = InStrRev(lines(x), " ")


PagenumPosi = Len(lines(x)) - PagenumPosi

UFpagenum = Right(lines(x), PagenumPosi)

GoTo extractpage

End If

Next


End If
Debug.Print "Line"; i; "="; lines(i)
Next



extractpage:

wsh.Run "C:\Users\johnmcs\Desktop\pdftk.exe C:\Users\johnmcs\Desktop\FULL.PDF cat " & UFpagenum & " output C:\Users\johnmcs\Desktop\page" & UFpagenum & ".pdf", windowStyle, waitOnReturn



End Sub

最佳答案

Sub PDF_GetUFPlan()

Dim wsh
Set wsh = CreateObject("WScript.Shell") ' NB we also have wscript.createobject
Dim waitOnReturn
waitOnReturn = True
Dim windowStyle
windowStyle = 1
Dim errorCode

所以在这里,开始是固定的。你不能像任何东西一样暗淡。一切都是变种。一切都必须是后期绑定(bind),所以所有集合都必须使用 CreateObject 完成 - 否 set x = new thing但是 set x = CreateObject("thing.application") .

请记住 VB6/VBA 支持 vbs 功能集。 vbs 与 vb6/vba 兼容(设计目标)。

关于vba - 将 VBA 代码移动到独立的 VBS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24154077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com