visual_basic_office:principal
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| visual_basic_office:principal [2023/05/15 13:58] – alberto | visual_basic_office:principal [2023/05/17 17:06] (actual) – [Manejo de errores] alberto | ||
|---|---|---|---|
| Línea 190: | Línea 190: | ||
| + | ===== Word ===== | ||
| + | ==== Macros en Word ==== | ||
| + | Para manejar datos de un documento Word, primero debemos crear una instancia del documento. | ||
| + | <code vbnet> | ||
| + | Dim doc As Document | ||
| + | Set doc = ActiveDocument | ||
| + | </ | ||
| + | ==== Sentencias útiles ==== | ||
| + | === Extraer el número total de páginas de un documento === | ||
| + | <code vbnet> | ||
| + | Dim doc As Document | ||
| + | Dim totalPaginas As Integer | ||
| + | Set doc = ActiveDocument | ||
| + | totalPaginas = doc.ComputeStatistics(wdStatisticPages) | ||
| + | </ | ||
| + | === Guardar un documento o parte de él en PDF === | ||
| + | <code vbnet> | ||
| + | Dim doc As Document | ||
| + | Dim nombreArchivo As String | ||
| + | Dim ruta As String | ||
| + | Dim totalPaginas As Integer | ||
| + | |||
| + | Set doc = ActiveDocument | ||
| + | |||
| + | nombreArchivo = " | ||
| + | ruta = " | ||
| + | totalPaginas = doc.ComputeStatistics(wdStatisticPages) | ||
| + | |||
| + | ' En este caso se guardarán todas las páginas | ||
| + | doc.ExportAsFixedFormat OutputFilename: | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Manejo de errores ==== | ||
| + | En ocasiones es necesario evitar que se detenga la ejecución del programa si se detecta un error.\\ | ||
| + | Para ello usamos la sentencia | ||
| + | <code vbnet> | ||
| + | On Error Resume Next | ||
| + | </ | ||
| + | |||
| + | De modo que si se produce un error a continuación, | ||
| + | <code vbnet> | ||
| + | If Err.Number <> 0 Then ' Si es 0 es que no se ha producido error. También podría ponerse "= 'nº error' " | ||
| + | Set ExcelApp = CreateObject(" | ||
| + | End If | ||
| + | </ | ||
| + | |||
| + | Para restablecer el manejo normal de errores, se utiliza la sentencia: | ||
| + | <code vbnet> | ||
| + | On Error GoTo 0 | ||
| + | </ | ||
| + | |||
| + | En el siguiente apartado se puede ver un ejemplo práctico al instanciar en Word elementos Excel. | ||
| + | |||
| + | ==== Trabajar con Excel desde Word ==== | ||
| + | Para trabajar con un Documento Excel desde Word, primero hay que fijar las instancias de los objetos de Excel con la que se va a trabajar. \\ | ||
| + | Si no está abierto Excel, se producirá un error. En el siguiente código evitamos que se detenga la ejecución del programa por este motivo, de modo que si éste ocurre, se cree una nueva instancia. Se volverá a retomar el manejo normal de errores a partir de la sentencia "On Error GoTo 0" | ||
| + | <code vbnet> | ||
| + | Function LeerValorCeldaExcel(ByVal RutaArchivo As String, ByVal NombreHoja As String, ByVal Fila As Integer) As Variant | ||
| + | Dim ExcelApp As Object | ||
| + | Dim ExcelLibro As Object | ||
| + | Dim ExcelHoja As Object | ||
| + | Dim ValorCelda As Variant | ||
| + | | ||
| + | On Error Resume Next | ||
| + | ' Crea una instancia de Excel | ||
| + | Set ExcelApp = GetObject(, " | ||
| + | | ||
| + | ' Si Excel no está abierto, crea una nueva instancia de Excel | ||
| + | If Err.Number <> 0 Then | ||
| + | Set ExcelApp = CreateObject(" | ||
| + | End If | ||
| + | | ||
| + | On Error GoTo 0 | ||
| + | ' Abre el archivo de Excel | ||
| + | Set ExcelLibro = ExcelApp.Workbooks.Open(RutaArchivo) | ||
| + | | ||
| + | ' Selecciona la hoja especificada | ||
| + | Set ExcelHoja = ExcelLibro.Worksheets(NombreHoja) | ||
| + | | ||
| + | ' Lee el valor de la celda en la primera columna y la fila especificada | ||
| + | ValorCelda = ExcelHoja.Cells(Fila, | ||
| + | ' En este caso se lee el valor de una Celda que se va a devolver, pero el programa puede hacer cualquier otra cosa | ||
| + | | ||
| + | ' Cierra el archivo de Excel sin guardar cambios | ||
| + | ExcelLibro.Close False | ||
| + | | ||
| + | ' Libera los objetos de Excel | ||
| + | Set ExcelHoja = Nothing | ||
| + | Set ExcelLibro = Nothing | ||
| + | ExcelApp.Quit | ||
| + | Set ExcelApp = Nothing | ||
| + | | ||
| + | ' Devuelve el valor de la celda | ||
| + | LeerValorCeldaExcel = ValorCelda | ||
| + | End Function | ||
| + | </ | ||
| + | |||
| + | Hay que tener en cuenta que hay que cerrar las instancias abiertas para prevenir problemas de memoria. | ||
visual_basic_office/principal.1684151909.txt.gz · Última modificación: por alberto
