Así que tengo que ejecutar la aplicación de Excel de otra persona en mi PC, y obtengo "No puedo encontrar el proyecto o la biblioteca" en funciones estándar como fecha, formato, hexadecimal, medio, etc.
Algunas investigaciones indican que si prefijo estas funciones con "VBA". como en "VBA.Date", entonces funcionará bien.
Las páginas web sugieren que tiene que ver con las referencias de mi proyecto en mi sistema, mientras que deben estar bien en el sistema del desarrollador. Voy a estar lidiando con esto por algún tiempo de otros, y distribuiré estas aplicaciones a muchos otros, así que necesito entender qué está mal con mi configuración de Excel que necesito arreglar, o qué se debe cambiar en el xls para que se ejecute en una variedad de sistemas. Me gustaría evitar que todos usen "VBA". como referencia explícita, pero si no hay una solución ideal, supongo que eso es lo que tendremos que hacer.
- ¿Cómo hago "VBA"? implícito en las propiedades / referencias / etc de mi proyecto?
-Adán
fuente
Respuestas:
He visto errores en funciones estándar si faltaba una referencia a una biblioteca totalmente diferente.
En el editor de VBA, ejecute el comando Compilar desde el menú y luego verifique el cuadro de diálogo Referencias para ver si falta algo y, si es así, intente agregar estas bibliotecas.
En general, parece ser una buena práctica compilar el código VBA completo y luego guardar el documento antes de la distribución.
fuente
Yo tuve el mismo problema. Esto funcionó para mí:
fuente
He experimentado este problema exacto y encontré, en la máquina del usuario, una de las bibliotecas de las que dependía estaba marcada como "FALTA" en el cuadro de diálogo de referencias. En ese caso, era una biblioteca de fuentes de oficina que estaba disponible en mi versión de Office 2007, pero no en el escritorio del cliente.
El error que obtiene es una pista falsa (como lo señaló divo).
Afortunadamente, no estaba usando nada de la biblioteca, por lo que pude eliminarlo de las referencias de XLA por completo. Supongo que una extensión de la mejor práctica sugerida por divo sería probar para verificar el XLA en todas las versiones de Office de destino (no es una mala idea en cualquier caso).
fuente
En mi caso, fue que la función era AMBIGUOSA ya que estaba definida en la biblioteca VBA (presente en mis referencias), y también en la Biblioteca de objetos de Microsoft Office (también presente). Eliminé la biblioteca de objetos de Microsoft Office y ¡listo! No es necesario utilizar VBA. prefijo.
fuente
En mi caso, ni siquiera pude abrir "Referencias" en la ventana de Visual Basic. Incluso intenté reinstalar Office 365 y no funcionó. Finalmente, intenté deshabilitar las macros en la configuración del "Centro de confianza". Cuando reinicié Excel, recibí el mensaje de advertencia de que las macros estaban deshabilitadas y, cuando hice clic en "habilitar", ya no recibí el mensaje de error.
Más tarde, volví a habilitar todas las macros en la configuración del "Centro de confianza", ¡y el mensaje de error no apareció!
Oye, si nada más funciona para ti, prueba lo anterior; funcionó para mí! :)
Actualización: el problema volvió, y así es como lo "arreglé" la segunda vez :
Abrí mi libro de trabajo en Excel en línea (Office 365, en el navegador, que de todos modos no admite macros), lo guardé con un nuevo nombre de archivo (todavía usando la extensión de archivo .xlsm) y lo volví a abrir en el software de escritorio. Funcionó.
fuente
.xlsm
libros de trabajo habilitados para macros , aunque con bastante poca frecuencia; anecdóticamente, parece ocurrir con más frecuencia en archivos más complicados. Parece que algún elemento de la biblioteca de VBA puede corromperse, pero el hecho de que Excel en línea puede solucionarlo, mientras que otros métodos no pueden es extrañoEn mi caso, estaba verificando el trabajo realizado en la computadora de mi oficina (con Visio instalado) en casa (sin Visio). A pesar de que VBA parecía estar atascado en funciones predeterminadas simples, el problema era que tenía referencias a las bibliotecas de Visio aún activas.
fuente
Encontré referencias a un archivo de programa AVAYA / CMS. Totalmente aleatorio, esto fue en MS Access, nada que ver con AVAYA. Tengo AVAYA en mi PC y otros no, así que esto explica por qué funcionó en mi máquina y no en otras, pero no cómo Access se vinculó a AVAYA. De todos modos, acabo de desmarcar la referencia y parece haber solucionado el problema
fuente
Incluso cuando todas las referencias están bien, el problema del prefijo provoca errores de compilación.
¿Qué hay de crear un sub de búsqueda y reemplazo para todas las 'funciones VBA integradas' en todos los módulos, como este:
reemplazar texto en el módulo de código
por ejemplo, "= Fecha" se reemplazará por "= VBA.Date".
por ejemplo, "Fecha (" se reemplazará por "VBA.Date (".
(excepto "dim t As Date" o "mydate")
Todas las funciones de vba para buscar y reemplazar están escritas aquí:
lista de funciones vba
fuente
He tenido este error de forma intermitente durante aproximadamente dos años en varios archivos XLSM (lo que es más molesto, ya que cuando ocurre, ¡no hay nada de malo en el archivo! - Sospecho que los procesos huérfanos de Excel son parte del problema)
La solución más eficiente que encontré ha sido usar Python con oletools
https://github.com/decalage2/oletools/wiki/Install
y extraer el código VBA de todos los módulos y guardarlo en un archivo de texto.Luego, simplemente cambio el nombre del archivo a archivo zip (¡copia de seguridad por si acaso!), Abro este archivo zip y elimino el archivo xl / vbaProject.bin. Vuelva a cambiar el nombre a XLSX y debería estar listo.
Copie el código VBA guardado (que necesitará la limpieza de saltos de línea, comentarios y otras cosas. También deberá agregar las bibliotecas que faltan).
Esto me ha salvado cuando otros métodos no lo han hecho.
YMMV.
fuente