¿Cómo utilizar VBA para abrir un PDF y consultar los datos, obtener el número de página o extraer la página como un archivo nuevo?
Abra el documento PDF, busque la cadena especificada y luego inserte el marcador
El siguiente código primero establece una cadena para buscar, usa el método findtext para buscar y luego usa el método createchild para insertar el marcador. El entorno de ejecución del código es Win8.1, Word2010 VBA, Acrobat Pro DC y la prueba fue exitosa en esta máquina.
Los principales métodos utilizados son AVDoc.FindText y BookMark.createChild.
AVDoc.FindText tiene 4 parámetros:
szText, la cadena que se va a encontrar
bCaseSensitive, si distingue entre mayúsculas y minúsculas, el número positivo distingue entre mayúsculas y minúsculas , 0 no distingue
bWholeWordsOnly, si coincide con la palabra completa, un número positivo significa coincidencia, 0 significa que no hay coincidencia
bRestablecer, la posición inicial de la búsqueda, un número positivo el número comienza desde la primera página, 0 significa comenzar desde la página actual
BookMark.createChild tiene 3 parámetros
cName, el nombre del marcador que el usuario ve en el panel de navegación.
cExpr, la expresión que se ejecutará cuando se haga clic en el marcador, como JavaScript
nIndex, (opcional) En el subconjunto del marcador, el índice basado en 0 del Se crea un nuevo submarcador. El valor predeterminado es 0.
Sub Pdf Add Bookmark()
'Agregar un marcador a un libro
Dim App As New Acrobat.AcroApp
Dim PDoc Como nuevo Acrobat.AcroPDDoc, AVDoc como nuevo Acrobat.AcroAVDoc
Atenuar Jso como objeto
Atenuar BMark como objeto 'no se puede declarar como Acrobat.AcroPDBookmark; de lo contrario, el método createchild no se disponible.
Dim PFile As String, WordTF As String, PageNum As Long
PFile = "F:\Specified file.pdf" 'Archivo PDF para insertar marcadores
WordTF = "Buscando"
Si PDoc.Open(PFile) Entonces
Establecer Jso = PDoc.GetJSObject
Establecer AVDoc = PDoc.OpenAVDoc( "" ) ?'Obtener un documento visible
Jso.bookmarkroot.Remove 'Eliminar todos los marcadores originales
End If
If AVDoc.FindText( WordTF, 0, 0 , 1) Luego 'Comience desde la primera página, si la cadena WordTF se encuentra una vez
PageNum = AVDoc.GetAVPageView.GetPageNum 'Obtenga el número de página actual
Establezca BMark = Jso. bookmarkroot 'Establece el objeto raíz del marcador
BMark.createChild WordTF, "this.pageNum=" amp PageNum, 0 'Crea un marcador
PDoc.Save 1, PFile
Finalizar si
PDoc.Close
App.CloseAllDocs
App.Hide
App.Exit p>
Establecer AVDoc = Nada
Establecer PDoc = Nada
Establecer aplicación = Nada
Establecer BMark = Nada
Establecer Jso = Nada
Fin Sub