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

标签 vba excel vbscript migrate

我在 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/

相关文章:

Html 使用 SQL 的颜色结果更改正文背景

javascript - 访问驻留在另一个对象中的对象的属性

optimization - vbscript 中的 Err.clear

Excel - 复杂验证的策略

vba - 如何在 excel-vba 中添加 'Stop Macro'?

调用具有多个参数的 Sub 时 VBA 返回错误

excel - 如何使用excel函数: If, Mod和Floor

vba - Excel 公式将日期从 dddd mmmm dd, yyyy 转换为 dd/mm/yyyy

Excel VBA - 获取图表数据范围

regex - 如果字符串中的任何内容与模式检查的内容不同,则正则表达式返回 false