image

Como sugiere el nombre, la función CreateObject se utiliza para crear objetos. Pero, ¿por qué usamos el método o función CreateObject si podemos crear directamente un objeto usando la nueva palabra clave? Bueno, esa es una pregunta válida y tenemos una respuesta adecuada. La creación de un objeto utilizando CreateObject se denomina Enlace tardío *. En el enlace tardío, la creación de objetos ocurre en el tiempo de ejecución. No es necesario agregar ninguna referencia. Esto hace que el código VBA sea portátil.

Por ejemplo, si crea una aplicación que se ocupa de otras aplicaciones y utiliza el enlace anticipado añadiendo referencias y utilizando la palabra clave new *. Más tarde, transfiere ese código a otra máquina, luego también tendrá que agregar las referencias en esa máquina.

Pero si ha usado el método CreateObject para crear otros objetos de aplicación, no necesitará agregar las referencias en otras máquinas, en caso de que transfiera o comparta el código.

En este artículo aprenderemos sobre el método CreateObject usando algunos ejemplos.

Sintaxis de la función CreateObject:

Set object_name= CreateObject(classname as string,[servername])

nombre de clase como cadena: es una variable obligatoria. Es una cadena que hace referencia al nombre de la aplicación y al tipo de objeto. El nombre de la aplicación y la clase del objeto a crear deben declararse en AppName.ObjecType. Por ejemplo, si quiero un objeto de aplicación de Word, escribiría «Word.Application». Lo veremos en detalle en ejemplos más adelante.

[nombre del servidor]: es una variable opcional. Es una cadena del nombre del servidor de red donde se creará el objeto. Si el nombre del servidor es una cadena vacía («»), se utiliza la máquina local. No usaremos esto en este capítulo.

Ahora que conocemos los conceptos básicos de la función CreateObject, usémoslos en algunos ejemplos:

Ejemplo 1: Abrir una aplicación de Microsoft Word usando Excel VBA Entonces, si quisiéramos usar el enlace temprano, agregaríamos referencias a las aplicaciones de Word usando el menú Herramientas → Referencias.

image

Y nuestro código se vería así.

Sub OpenWordApp()

Dim wordApp As New Word.Application

Dim wordDoc As Document

wordApp.Visible = True

wordDoc = wordApp.Documents.Add

End Sub

La ventaja de este código es que obtienes la ayuda de la inteligencia de VBA y te muestra el método disponible y las propiedades del objeto que has creado, funcionará perfectamente bien en tu sistema. Pero, si comparte este código con otra persona y no ha agregado la referencia a la biblioteca de Microsoft Word desde las herramientas, obtendrá un error.

image

Para evitar este error, utilice el siguiente código.

Sub OpenWordApp()

Dim wordApp As Object



Set wordApp = CreateObject("Word.Application")



Dim wordDoc As Object

wordApp.Visible = True

Set wordDoc = wordApp.Documents.Add

End Sub

El código anterior funcionará perfectamente en cualquier máquina. Es portátil ya que estamos haciendo un enlace tardío usando el método CreateObject para crear el objeto.

Veamos otro ejemplo:

Ejemplo 2: Crear un objeto de libro de trabajo usando la función CreateObject Si está trabajando con VBA durante cualquier período de tiempo, debe haber creado o agregado libros de trabajo usando la palabra clave New. En este ejemplo, lo haremos usando CreateObject.

Sub addSheet()



' Declare an object variable to hold the object

' reference. Dim as Object causes late binding.

Dim ExcelSheet As Object

Set ExcelSheet = CreateObject("Excel.Sheet")

' Make Excel visible through the Application object.

ExcelSheet.Application.Visible = True

' Place some text in the first cell of the sheet.

ExcelSheet.Application.Cells(1, 1).Value = "This is column A, row 1"

' Save the sheet to C:\test.xls directory.

ExcelSheet.SaveAs "C:\TEST.XLS"

' Close Excel with the Quit method on the Application object.

ExcelSheet.Application.Quit

' Release the object variable.

Set ExcelSheet = Nothing

End Sub

Así que sí, chicos, así es como se usa el método CreateObject en VBA. Analicemos los beneficios y las deficiencias de la misma.

Ventajas de CreateObject para crear objetos La principal ventaja de CreateObject es que hace que su código sea portátil (cuando la creación del objeto es la preocupación). Puede compartir el código con cualquier persona sin preocuparse de si han agregado la referencia al programa objeto que usa o no.

Deficiencia de CreateObject

Las deficiencias del método CreateObject son:

Necesita conocer la estructura de la Clase que va a utilizar para la creación de objetos.

Una vez que haya creado el objeto, depende totalmente de su memoria para los métodos y propiedades de los objetos, ya que VBA no proporciona ningún intellisense para ayudarlo.

Podemos superar las deficiencias anteriores. Tengo un truco.

Siempre que escribo código que se compartirá con otros, utilizo el primer método para crear objetos (Agregar referencias de herramientas). Esto me ayuda a escribir el código más rápido. Una vez que finalizo el programa VBA y lo he probado, reemplazo el método New con el método CreateObject. Esto hace que el código sea portátil. Puedes usar este truco.

Así que sí, chicos, así es como pueden usar la función CreateObject para crear objetos en VBA. Espero haber podido explicar todo. Si tiene alguna pregunta sobre este artículo o cualquier otra pregunta relacionada con VBA, pregúnteme en la sección de comentarios a continuación.

Artículos relacionados:

link: / applications-word-outlook-in-vba-Getting-started-with-excel-vba-userforms [Empezando con Excel VBA UserForms] | * Explicaré cómo crear un formulario en Excel, cómo usar Caja de herramientas de VBA, cómo manejar las entradas del usuario y finalmente cómo almacenar las entradas del usuario. Repasaremos estos temas usando un ejemplo y una guía paso a paso.

link: / general-topics-in-vba-vba-variables-in-excel [Variables de VBA en Excel] | * VBA significa Visual Basic para Aplicaciones.

Es un lenguaje de programación de Microsoft. Se utiliza con aplicaciones de Microsoft Office como MSExcel, MS-Word y MS-Access, mientras que las variables de VBA son palabras clave específicas.

link: / general-topics-in-vba-excel-vba-variable-scope [Excel VBA Variable Scope] | * En todos los lenguajes de programación, tenemos especificadores de acceso variable que definen desde dónde se puede acceder a una variable definida. Excel VBA no es una excepción. VBA también tiene especificadores de alcance.

link: / celdas-rangos-filas-y-columnas-en-vba-cuál-es-la-diferencia-entre-byref-y-byval-argumentos-vba-entrevista-pregunta [ByRef y ByVal Arguments] | Cuando se pasa un argumento como argumento ByRef a una función o sub diferente, se envía la referencia de la variable real. Cualquier cambio realizado en la copia de la variable se reflejará en el argumento original.

link: / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirm-prompts-using-vba-in-microsoft-excel [Eliminar hojas sin mensajes de confirmación usando VBA en Microsoft Excel] | Dado que está eliminando hojas usando VBA, sabe lo que está haciendo.

Le gustaría decirle a Excel que no muestre esta advertencia y elimine la maldita hoja.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Add And Save New Workbook Using VBA In Microsoft Excel 2016] | En este código, primero creamos una referencia a un objeto de libro de trabajo. Y luego lo inicializamos con un nuevo objeto de libro de trabajo. El beneficio de este enfoque es que puede realizar operaciones en este nuevo libro de trabajo fácilmente. Como guardar, cerrar, eliminar, etc `link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Mostrar un mensaje en La barra de estado de Excel VBA *] `| La barra de estado en Excel se puede utilizar como monitor de código. Cuando su código VBA es extenso y realiza varias tareas usando VBA, a menudo deshabilita la actualización de la pantalla para que no vea que la pantalla parpadea.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Desactivar mensajes de advertencia usando VBA en Microsoft Excel 2016] | * Este código no solo deshabilita VBA alertas, pero también aumenta la eficiencia del tiempo del código. Veamos cómo.

Artículos populares:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentar-su-productividad [50 accesos directos de Excel para aumentar su productividad] | Acelera tu tarea. Estos 50 atajos lo harán trabajar aún más rápido en Excel.

enlace: / fórmulas-y-funciones-introducción-de-función-vlookup [La función BUSCARV en Excel] | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas. enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016] | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar valores específicos.

La función Countif es esencial para preparar su tablero.

link: / excel-formula-and-function-excel-sumif-function [Cómo usar la función SUMIF en Excel] | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.