Cómo importar, leer y cambiar datos de EXCEL en QTP/UFT
⚡ Resumen inteligente
Importar, leer y cambiar datos de Excel en QTP/UFT Se basa en el objeto DataTable integrado, que carga un libro de trabajo en la tabla de datos en tiempo de ejecución para que cada script de automatización pueda controlar los pasos de prueba a partir de las filas de la hoja de cálculo.

Las hojas de cálculo siguen siendo el lugar más común donde los evaluadores guardan sus valores de entrada, resultados esperados y configuraciones del entorno. QTP, ahora se vende como OpenText UFT Uno después de que el producto pasó de HP a Micro Focus y luego a OpenText, lee esas hojas de cálculo a través del objeto DataTable. Las secciones siguientes muestran las instrucciones exactas utilizadas para importar un libro de trabajo, contar sus filas, leer celdas individuales, cambiar valores y guardar la hoja en el disco.
Pasos para importar, leer y cambiar datos desde EXCEL
Considere que desea importar lo siguiente Ventas.xls Incluya el libro de ejercicios en su examen.
Una vez que el archivo se importa en UFTLa fila superior se convierte en el encabezado de la columna, así que estructure sus datos en consecuencia. Todo lo que aparece en la fila 1 se trata como un nombre de parámetro en lugar de como datos de prueba, y cada fila restante se cuenta como una fila de datos.
A continuación se muestra la sintaxis para importar un archivo Excel completo.
DataTable.Import(FileName)
En nuestro caso, la instrucción queda de la siguiente manera. VBScript no necesita paréntesis cuando se llama a un método como una instrucción, por lo que aquí se utiliza la forma simple.
DataTable.Import "D:\Automation\Sales.xls"
Tras la ejecución, las filas importadas aparecen en el panel de datos en tiempo de ejecución exactamente como estaban dispuestas en el libro de trabajo.
A continuación se muestra la sintaxis para importar una hoja de cálculo específica. SheetSource es la hoja dentro del libro de trabajo y SheetDest es la hoja de destino en la tabla de datos de tiempo de ejecución.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Utilice el Obtener número de filas Método para obtener el número de filas de datos en una hoja de cálculo. Cada instrucción debe ir en una línea independiente.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
El cuadro de mensaje que aparece informa del total de filas de la hoja importada.
Para mover el puntero a una fila específica, utilice el EstablecerFilaActual método. El segundo argumento de DataTable.Value es el número de hoja, no el número de fila, por eso el puntero de fila tiene que moverse por separado.
DataTable.Import "D:\Automation\Sales.xls" ' In the code below, 1 is the sheet number DataTable.SetCurrentRow 1 Row1 = DataTable.Value("Year", 1) DataTable.SetCurrentRow 2 Row2 = DataTable.Value("Year", 1) MsgBox "Year Row 1 = " & Row1 & " Year Row 2 = " & Row2
Ambos valores se leen de la misma columna, pero de dos filas diferentes, y el cuadro de mensaje los imprime uno al lado del otro.
Utilice el Valor Método a la izquierda de una asignación para cambiar datos en la hoja importada. El cambio permanece en memoria hasta que se llama Exportar, que escribe la tabla de datos de tiempo de ejecución en un archivo de Excel.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
La celda editada es visible en el panel de datos en tiempo de ejecución inmediatamente después de que se ejecute la tarea.
Al abrir el libro de trabajo exportado, se confirma que los valores modificados se guardaron en el disco y no se conservaron únicamente durante la ejecución del programa.
💡 Consejo: Exporta el archivo con un nombre diferente al que importaste. Volver a escribir en el mismo libro de trabajo abierto es la forma más rápida de provocar una infracción de uso compartido y perder la ejecución.
Cómo leer, modificar y exportar datos de Excel: un ejemplo completo
Los fragmentos anteriores demuestran cada uno un método. En una prueba real basada en datos, se combinan en un único bucle que recorre cada fila, calcula algo, almacena el resultado y exporta la hoja. Supongamos que el libro de trabajo es Ventas.xls Contiene las siguientes cuatro columnas y tres filas de datos.
| Año | Región | Monitoreadas | Precio |
|---|---|---|---|
| 2023 | Este | 120 | 25 |
| 2024 | Este | 150 | 25 |
| 2025 | West | 200 | 30 |
El script a continuación agrega un Revenue La columna se rellena fila por fila, se mantiene un total acumulado y se escribe la hoja finalizada en un archivo nuevo. AddParameter Se utiliza porque la columna no existe en el libro de trabajo de origen; llamarla para una columna que ya existe genera un error.
' Read, calculate and export Excel data in UFT One Dim sh, rowCount, i, units, price, revenue, total DataTable.Import "D:\Automation\Sales.xls" Set sh = DataTable.GetSheet(1) sh.AddParameter "Revenue", "" rowCount = sh.GetRowCount Print "Total rows imported: " & rowCount total = 0 For i = 1 To rowCount DataTable.SetCurrentRow i units = DataTable.Value("Units", 1) price = DataTable.Value("Price", 1) revenue = CInt(units) * CInt(price) DataTable.Value("Revenue", 1) = revenue total = total + revenue Print "Row " & i & " | Year: " & DataTable.Value("Year", 1) & _ " | Region: " & DataTable.Value("Region", 1) & _ " | Revenue: " & revenue Next Print "Grand Total Revenue: " & total DataTable.Export "D:\Automation\Sales_Revenue.xls" Set sh = Nothing
Salida:
Total rows imported: 3 Row 1 | Year: 2023 | Region: East | Revenue: 3000 Row 2 | Year: 2024 | Region: East | Revenue: 3750 Row 3 | Year: 2025 | Region: West | Revenue: 6000 Grand Total Revenue: 12750
Tres puntos de este guion importan más que el resto. Primero, GetRowCount devuelve 3 en lugar de 4 porque la fila de encabezado se consume como nombres de columna. Segundo, SetCurrentRow Se llama al principio de cada iteración; sin ella, las tres iteraciones leerían la misma fila. En tercer lugar, los valores que salen de la tabla de datos son cadenas, por lo que CInt Se aplica antes de la multiplicación para evitar la concatenación de cadenas en lugar de la aritmética. Saltarping DataTable.Export Esto dejaría los ingresos calculados visibles en el panel de datos, pero ausentes de cualquier archivo en el disco.
Objeto DataTable frente a objeto COM de Excel en UFT
El objeto DataTable no es la única forma de acceder a una hoja de cálculo. UFT Los scripts también pueden crear un Excel.Application Objeto COM y control directo de Excel. Ambos enfoques resuelven problemas diferentes.
| Aspecto | objeto DataTable | Objeto COM de Excel |
|---|---|---|
| Instalación de Excel | No es necesario en la máquina de ejecución. | Microsoft Excel debe estar instalado |
| Estilo de direccionamiento | Por nombre de columna y puntero de fila | Por coordenadas de celda, rangos o rangos con nombre |
| Iteraciones | Las filas impulsan automáticamente las iteraciones de prueba. | No hay enlace a las iteraciones; looping es manual |
| Formato y fórmulas | Ignorado; solo se leen los valores. | Acceso completo a fórmulas, colores y gráficos. |
| Varios libros de trabajo | Una tabla de tiempo de ejecución, hojas importadas una a una. | Cualquier número de libros de trabajo abiertos simultáneamente |
| Informe de resultados | Los valores aparecen en el UFT Ejecutar resultados automáticamente | No se registra nada a menos que usted mismo lo reporte. |
| Carga de limpieza | Manejado por UFT | Debes cerrar, salir y liberar cada objeto. |
La regla práctica es simple. Utilice el objeto DataTable para una parametrización sencilla, donde cada fila de la hoja de cálculo se convierte en una iteración de un pruebas de automatización Ejecutar. Utilice el objeto COM solo cuando necesite información que la tabla de datos no pueda proporcionar, como leer el resultado de una fórmula, generar un informe con formato o comparar dos libros de trabajo en el mismo script. El siguiente ejemplo lee una celda, devuelve un estado y cierra Excel correctamente.
Dim xlApp, xlBook, xlSheet, cellValue Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Open("D:\Automation\Sales.xls") Set xlSheet = xlBook.Worksheets("Sheet1") cellValue = xlSheet.Cells(2, 1).Value Print "Cell A2 contains: " & cellValue xlSheet.Cells(2, 5).Value = "Reviewed" xlBook.Save ' Release everything, in this order xlBook.Close False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing
Salida:
Cell A2 contains: 2023
La celda A2 contiene 2023 porque la fila 1 de la hoja de cálculo es la fila de encabezado y la columna A es Año . Observe que el direccionamiento COM se basa en uno y cuenta el encabezado, mientras que DataTable.SetCurrentRow 1 señala la primera fila de datos.
Errores comunes al usar Excel con UFT y cómo solucionarlos
La mayoría de los problemas de Excel en UFT Provienen de un pequeño conjunto de errores repetibles. Reconocerlos ahorra mucho tiempo de depuración.
⚠️ Advertencia: Un proceso EXCEL.EXE huérfano es el efecto secundario más común de la automatización COM. Cada CreateObject("Excel.Application") que no coincide con Quit más Set … = Nothing Deja una instancia oculta de Excel en ejecución. Tras varios cientos de pruebas, la máquina de ejecución se queda sin memoria y el libro de trabajo de origen queda bloqueado para su edición.
- Excel permanece en la memoria. Cierre el libro de trabajo, llame
xlApp.QuitLuego, libere los objetos de la hoja, el libro de trabajo y la aplicación en ese orden. Liberar primero la aplicación deja una referencia activa y mantiene el proceso en ejecución. - Los cambios desaparecen después de la ejecución.
DataTable.Valueescribe solo en la tabla de datos de tiempo de ejecución. SinDataTable.Export, nada llega al sistema de archivos. - "La columna no existe" o error de parámetro no válido. El nombre de la columna que se pasa a
DataTable.ValueDebe coincidir exactamente con la celda del encabezado, incluidos los espacios finales.AddParametercrear una columna antes de escribir en ella. - En cada iteración se leen los mismos valores.
SetCurrentRowNo se llamó a la función dentro del bucle, por lo que el puntero de fila nunca se movió. - Contabilidad por una fila desfasada.
GetRowCountexcluye la fila de encabezado. Un libro de trabajo con un encabezado y diez registros devuelve 10, no 11. - Errores de ruta y permisos. Rutas codificadas de forma fija como
D:\Automation\Sales.xlsNo se produce ningún fallo en otras máquinas. Construya la ruta a partir de una variable de entorno para que el mismo script se ejecute en todos los agentes. - Celdas combinadas y varias filas de encabezado. La importación requiere exactamente una fila de encabezado con nombres únicos. Las celdas combinadas producen nombres de parámetros en blanco o duplicados.
- Violación de compartición en la exportación. El archivo de destino no se puede abrir en Excel mientras
ExportSe ejecuta. Ciérralo primero o expórtalo a un archivo con nombre que incluya la fecha y hora.
Un hábito útil es envolver la limpieza de COM en un On Error Resume Next El bloque se coloca en una función de recuperación dedicada, por lo que un fallo a mitad del script sigue cerrando Excel. Cuando los datos de Excel alimentan un sistema formal caso de prueba En el repositorio, se aplica la misma disciplina a los resultados: exportar una vez, verificar que el archivo exista y luego adjuntarlo a la ejecución.
Para profundizar en los temas tratados aquí, consulte el documento completo. QTP/UFT tutoriales Para el marco más amplio, aprenda cómo impulsar los resultados. ALM de UFT, repase los fundamentos en pruebas de softwarey comparar el enfoque con la programación basada en datos en Selenium.






