Créez votre propre gestionnaire de flux de travail de documents par glisser-déposer dans Excel

Créez votre propre gestionnaire de flux de travail de documents par glisser-déposer dans Excel

hola, esto es randy con excel para autónomos y bienvenido al administrador de flujo de trabajo de documentos en la capacitación de esta semana, le mostraré cómo crear este increíble administrador de documentos completo con arrastrar y soltar completo con múltiples tipos de flujo de trabajo diferentes que podrá crear automáticamente miniaturas basadas en documentos de Word, documentos en PDF, imágenes y mucho más. Tengo mucho que compartir con ustedes en esta capacitación, así que comencemos bien. Muchas gracias por acompañarme hoy. Tengo una capacitación realmente fantástica llamada el administrador de flujo de trabajo de documentos si ha trabajado en una gran empresa obtener documentos aprobados o a través del proceso entre gerentes puede ser difícil engorroso y un verdadero dolor es difícil hacer que suban en la cadena de mando organizados y de manera oportuna una buena aplicación para ayudarnos con esto es una gran estrategia, entonces, ¿cómo vamos a hacerlo bien? Vamos a usar este administrador de flujo de trabajo de documentos. Excel es una herramienta poderosa cuando aplicamos un poco. de vba algunos consejos útiles visuales como estas miniaturas podemos crear una herramienta poderosa para cualquier tipo de combinación cuando agrega compartir y sincronizar esto se puede compartir en una carpeta compartida en todas las implementaciones en una empresa y también pueden tener un documento actualizado administración, lo que significa que cuando se crea un documento, independientemente de si se trata simplemente de un tiempo libre, una orden de venta o cualquier cosa que considere importante para su empresa, puede crearlo para que pase a través de cada gerente, cada gerente puede tener su propia revisión . escribir notas de revisión y pueden establecer su propio estado y también puede buscar cualquier otro archivo o simplemente puede pasarlo al siguiente administrador para su aprobación así como así será una gran capacitación con la que tengo mucho para compartir usted en esta aplicación, incluso si no está realmente interesado en crear un administrador de flujo de trabajo de documentos, hay muchas habilidades que aprenderá en esta clase magistral, incluidas las miniaturas creadas automáticamente ding arrastrar y soltar, incluidos los fines de programación o tenemos registros de ahorro, mapeo de datos y toneladas y toneladas de filtros avanzados y toneladas más. Espero que te quedes con nosotros durante toda la clase magistral. gratis hay algunas formas geniales en las que puedes ayudarnos simplemente comenzando a suscribirte no olvides hacer clic en la campana del ícono de notificación las creamos todos los martes para que te notifiquen sobre estos nuevos entrenamientos cada semana esta aplicación de descarga es absolutamente gratis, pero use los enlaces a continuación si desea usar su correo electrónico o con facebook messenger, pero si desea 200 de mis mejores aplicaciones, también las tengo disponibles en un solo archivo zip, eso es solo 77 en este momento y también viene con una biblioteca increíble y eso significa un solo clic para abrir la aplicación o un solo clic para simplemente ver la capacitación original tal como lo estamos haciendo ahora, esa es una biblioteca increíble, espero que tú configurará eso voy a crear esto para usted así que comencemos tenemos mucho que cubrir voy a ir línea por línea código por código en este libro de trabajo más todo lo que necesita saber para ser Capaz de crear su propio administrador de flujo de trabajo de documentos o simplemente para aumentar sus habilidades para crear sus propias aplicaciones en Excel. Mi objetivo no es solo hacerlo exitoso con Excel, sino brindarle las herramientas, trucos y consejos para brindarle todas las cosas . que necesita para comenzar su carrera en Excel o crear sus propias aplicaciones para la venta, hagámoslo, la mejor manera de comenzar es solo brindarle una descripción general, básicamente, lo que hacemos es cuando tenemos tipos de flujo de trabajo que podemos crear ilimitado tipos de tipos de flujo de trabajo cuando seleccionamos en un documento específico aquí toda la información si es el nombre del documento el autor que es la persona que lo solicitó por primera vez y el tipo de flujo de trabajo también tenemos el solicitado en la fecha y el nombre del archivo original que podemos buscar nosotros podemos n abra el documento simplemente haciendo clic aquí, lo abrirá y eso es independientemente del documento , podemos enviarlo a un supervisor diferente simplemente arrastrando, haciendo clic en él, arrastrándolo y soltándolo o cualquier otra cosa para que podamos moverlo a lo largo de aquí y se moverá automáticamente a una cosa diferente o, por supuesto, si no hay un administrador seleccionado cuando seleccionamos en un documento, todos los administradores, los supervisores en toda esa cadena se muestran automáticamente, esos supervisores particulares aquí se basan en el tipo de documento, por lo que Tenga en cuenta que no hay supervisor porque no hemos seleccionado un creador. La primera persona basada en este original es esa cadena de supervisores. Entonces, ¿cómo sabemos eso? Bueno, entremos en algunos de los fundamentos de esta aplicación y luego lo guiaré paso a paso. paso cómo lo creamos, así que vamos a comenzar con la pantalla de administración, tenemos una carpeta de documentos compartidos, necesitamos saber dónde están esos documentos, lo que queremos hacer si usa , digamos un dropbox, sus documentos compartidos pueden estar en toda su empresa, lo que significa que cada usuario podría obtener una aplicación como esta, pueden compartirse en toda la empresa si comparte los datos usando una de mis técnicas de intercambio y sincronización que acabo de demostrar en un video anterior, luego puede compartir y sincronizar esta aplicación con ellos, todo estará sincronizado, pero necesitamos una carpeta compartida, así que tenemos que aquí también necesitamos una carpeta de miniaturas compartida cuando cargamos un archivo que vamos a ser automáticamente cr puede crear miniaturas, por ejemplo, si busco un archivo específico y tengo digamos este recibo aquí o un pdf o cualquier cosa o jpeg y quiero crear una miniatura para él, automáticamente creará una miniatura, así que cuando guarde y actualice que es esa miniatura, que es esta aquí, la que se actualiza automáticamente en función del documento que hemos hecho, por lo que es una excelente manera de crear esas miniaturas que vamos a hacer nuevamente en imágenes en PDF o wo rd documentos, incluso si tiene un documento de Word, también puede hacerlo, por lo que debemos mantener esas miniaturas en una carpeta específica, así que básicamente he creado dos carpetas aquí. Tengo nuestra carpeta de documentos aquí y tengo nuestras miniaturas. aquí para que nuestras miniaturas se creen dinámicamente, pueden ser imágenes o cualquier otra cosa, y nuestros documentos se cargan y copian, así que básicamente, cuando un usuario simplemente hace clic aquí, navega, lo que va a hacer va a buscar donde sea que esté ubicado va a cargar eso entonces, si quiero cambiar eso a un pdf , simplemente haga clic aquí pdf, lo cambiará automáticamente a pdf, guarde y actualice ese aviso de que esa miniatura aquí se cambió a un pdf así, así que le mostraremos eso para que podamos Tengo esas dos carpetas. También quiero saber la jerarquía de la empresa. Quién es la parte superior de la cadena . Ese vicepresidente de la empresa. Entonces, en general, comienza con un personal de oficina, que es el empleado más bajo y luego sube como líder del equipo. oficina gerente supervisor gerente regional esto es realmente importante porque vamos a tener que saber quién está encima de quién también tenemos tipos de flujo de trabajo dinámicos realmente geniales porque luego podemos crear flujos de trabajo basados ​​en eso así que, por ejemplo, tal vez desee solicitar el tiempo tal vez solo hay dos gerentes involucrados en esto que debe mejorarse, pero tal vez tenga un gasto grande como por encima de mil dólares y necesitamos que varios gerentes lo aprueben aquí, por lo que en ese caso este tipo de flujo de trabajo será ser diferente así que observe aquí cuando seleccionamos orden de venta tenemos un cierto conjunto de gerentes aquí tenemos una orden de trabajo tenemos solo algunos gerentes diferentes solo cinco gerentes diferentes o un gasto menos nuevamente cinco gerentes diferentes y tenemos uno más grande que no No necesitamos a este presidente aquí, tenemos uno más grande, tenemos ofertas de proyectos o facturas, por lo que podemos crear lo que se denomina tipos de flujo de trabajo dinámico y podemos hacerlo dentro del administrador, por ejemplo, el tiempo libre solo tenemos estos cuatro gerentes, luego podemos seleccionar qué tipo de gerente nuevamente el pedido de ventas sería grande, así que aquí lo que podemos hacer es seleccionar todos los gerentes, todo este tipo de gerentes al menos están posicionados en cuyo supervisor comienza con el el personal de la oficina luego pasa al líder del equipo, luego al supervisor y luego para la aprobación final al gerente regional para que podamos formar parte del equipo, no solo podemos crear cualquier tipo de flujo de trabajo, sino que luego podemos crear toda la jerarquía activa del gerente que tiene que aprobar ese tipo y lo que configuré, veamos qué tengo aquí, nueve o diez diferentes aquí, así que es realmente genial que podamos hacer eso y podemos crear que puedes crear más si lo necesitas, pero creo que es un buen comienzo entonces tenemos flotantes dinámicos y luego tenemos estados de documentos bien cuál es el estado cuál es el estado inicial el estado pendiente cuando se está revisando una vez que se aprueba o se rechaza o necesita revisión y tal vez se finalice correctamente y así sucesivamente cuando esté finalizado, no queremos que aparezca aquí, así que si decidimos que vamos a finalizar un documento correctamente, queremos establecerlo, vamos a configurarlo para que finalice, vamos a guardarlo y actualizarlo no queremos que ese documento ya no esté, ya no está aquí, así que solo esos documentos pendientes nos mantendrán realmente organizados, así que es fácil finalizar un documento, así que vamos a tener eso también, así que eso es todo para la pantalla de administración relativamente simple, tenemos nuestros flujos de trabajo que se detallarán. Tengo una base de datos de documentos. Aquí es donde se almacenan todos nuestros documentos. Observe que uno que acabamos de decir se finalizó. Ponemos el que está finalizado aquí, pero si lo cambiamos. a la revisión pendiente , aparecerá nuevamente en las órdenes de venta, por lo que nuestra lista de documentos en particular contiene una identificación de documento, un nombre de documento, el autor, el personal original que creó, que también tenemos un tipo de flujo de trabajo, ¿cuál es el tipo de flujo de trabajo que estamos? va a necesitar saber porque están separados según los flujos de trabajo, así que cuando vuelvo a hacer clic en el pedido de ventas, noto que apareció aquí porque ahora configuramos una revisión dependiente dentro de la base de datos tenemos las órdenes de trabajo correctas tenemos gastos tenemos aviso de que podemos usar recibos y proyectos de imágenes ofertas y todo, y casi todo lo demás, también tenemos la cantidad, cuántos hay aquí, quiero tener la cantidad aquí, está bien, tenemos lo solicitado, así que todos los datos, el nombre del archivo original y la miniatura que se crea automáticamente, ¿dónde está ubicado? Necesito el nombre del archivo. Sé dónde se ubicará. Se ubicará en esta carpeta aquí, pero ciertamente necesito el nombre del archivo . está revisando actualmente qué gerente está revisando actualmente esto qué puesto de revisor cuál es su posición ¿verdad ? ¿son ellos el gerente de la oficina que está revisando esto y cuál es el estado actual del documento ? finalizando la revisión ¿Se ha aprobado? ¿Necesita volver a visitarse? ¿Sabe? ¿Necesita más revisión o se ha finalizado o se ha revisado bien ? en el creador , así que si quiero enviar esto de vuelta al original, solo hago clic en un botón, se enviará de vuelta a debbie aquí . así que tal vez debbie necesite rehacerlo o algo así para que sepa que ha sido rechazado y el administrador puede poner algunas notas sobre eso, así que haga clic para moverlo también nuevamente podemos usar arrastrar y soltar podemos mover un documento con solo haciendo clic en él y presionando esta marca al lado de la prueba o podemos enviarlo de vuelta al administrador posterior simplemente enviándolo de regreso a la parte posterior para que podamos mover estos documentos a lo largo de la cadena del proceso de aprobación gerencial simplemente haciendo esto ahora i' en realidad nunca trabajé en una gran empresa me despidieron de la mayoría de las empresas para las que trabajo, por lo que trabajo por mi cuenta, así que muchas gracias, sami, por tus consejos e inspiración en esto, me ayudaste a crear, al menos, las ideas para esto y luego doy un paso un poco más, así que no sé que él sabe cómo actúan las grandes empresas y eso me ayudó, así que entiendo el flujo del proceso, así que gracias sammy y vamos a continuar . dentro de nuestra revisión de documentos, ahora observe que hay varias revisiones por documento, por lo que debemos rastrearlas en una lista diferente aquí, así que tenemos eso y también tenemos el archivo de revisión, podemos agregar un archivo a esas notas y así podemos agregue mucha información a eso si queremos estar bien, también necesitaremos mostrar que necesito filtrar eso, en otras palabras , quiero saber todas las revisiones o revisiones de un documento específico, por lo que necesitaremos para ejecutarlo a través de un filtro avanzado como lo hacemos aquí para filtrar doc ument 8 right document id 8 solo quiero que esos resultados vengan aquí y luego esos resultados van a entrar en mi flujo de trabajo lo siento, entonces sé que estos tres tipos de revisiones se han completado en este documento específico que hemos seleccionado bien entonces es por eso que necesitamos hacer un seguimiento de esto en una base de datos separada . También tengo una lista de personal. Ahora, nuestra lista de personal aquí vendrá con una identificación. Nombre del personal . Puesto. voy a pensar en nuestra plataforma patreon voy a agregar automatización de correo electrónico a esto, así que si no te has unido a nuestro patreon ahora es un buen momento para hacerlo cada semana creo funciones adicionales para estos libros de trabajo y un nuevo video de capacitación algo que tal vez se presente o algo que sea una solución o algo en lo que tal vez me centre y lo pondré en patreon junto con una descarga completa en pdf y capacitaciones avanzadas y mucho más en nuestro patreon, así que Incluiré los enlaces a continuación si quieres. para unirse a nosotros allí y posiblemente una imagen. Realmente no he usado las imágenes, pero creo que saben que podría haber una forma en que podemos incorporar imágenes del personal que deberían ser agradables aquí , ¿no?, así que tal vez lo agregaré. también en Patreon, así que los flujos de trabajo tal vez me quedé sin espacio, pero tal vez una foto del personal aquí tengo un poco de espacio allí o tal vez una pequeña foto del personal del círculo aquí sería bueno, así que la puse. la base de datos pensando que tal vez si tiene algunas ideas, me encantaría escucharlas, así que al menos tenemos una columna para las fotos del personal y luego tengo la fila de los miembros del equipo que podrían ser útiles para seguir adelante, pero nada que necesitemos para hacerlo, lo que hacemos es saber que hay personal y es posible que queramos pasarlos, por lo que es posible que queramos ejecutar un filtro avanzado, pero para nuestros propósitos en esta capacitación, todo lo que usaremos es básicamente el nombre el posición y eso es todo para esta capacitación en particular, luego recibí una hoja de correo electrónico en blanco solo te da una idea de adónde querríamos ir con esto en este momento, está en blanco, pero si quieres que se active, adelante, podría poner algunas plantillas aquí, así que tengo muchas ideas para una plataforma de Patreon, capacitación adicional para todos . Bien, vamos a entrar en eso. Eso es más o menos un administrador de flujos de trabajo y dos bases de datos que contienen los documentos y las revisiones y luego una lista de personal. que quiero saber que tenemos algunos rangos con nombre que quiero llamar su atención porque nos ayudarán no solo en las fórmulas sino también en el código, así que repasemos algunos de los rangos con nombre que he creado eso va a estar en las fórmulas y el administrador de nombres, está bien, ahora estos criterios cuando los ve, estos son creados automáticamente por vba cuando creamos esos filtros avanzados, por lo que, por supuesto, lo más importante es que tengo una identificación de documento que estará en nombre dinámico real academia de bellas artes nge basado en la identificación del documento, así que cuando los creamos usando la fórmula de compensación, como siempre hacemos, las compensaciones pueden ayudarnos, así que a medida que crecen nuestras identificaciones de documentos, también lo es esta lista, así que la identificación del documento también tenemos el estado del documento. Quiero saber el estado de eso y eso va a estar aquí en el lado derecho aquí estado actual, así que quiero eso en un rango con nombre que es muy importante porque cuando los cuente no quiero no quiero saber cuáles se han finalizado, ¿no? No quiero contar que solo quiero contar los que están trabajando actualmente o en el proceso o avanzando en la cadena cualquier cosa que se haya finalizado no necesitamos contar, por lo que tener ese estado es realmente importante . También tengo el tipo de documento i. necesito saber el tipo de documento orden de venta gastos de orden de trabajo que serán útiles cuando los contemos necesito saber cuántas órdenes de venta no están finalizadas y cosas así para que el tipo de documento sea crítico nuevamente extraiga rangos esos por supuesto van a venir automaticamente solo a través de vba cuando creamos esos finales avanzados ahora tengo uno tengo que crear un rango con nombre basado en una sola celda y eso ayudará en vba ese es nuestro rango con nombre finalizado así que es básicamente un final sabemos que final es porque un poco también tenemos la jerarquía que es muy importante porque necesitamos conocer la jerarquía de la empresa y también tengo una que se llama necesita revisión, así que si la nueva discúlpeme necesita revisión o necesita revisión, cualquiera de los dos estaría bien, necesita revisión, nos quedaremos con eso va a ser un rango con nombre para una sola celda basada en b25 lo mismo con pendiente aquí pendiente también está pendiente de revisión que nos ayuda con el código y una vez que entremos en el código podrá ver cómo tener un rango con nombre en una sola celda es muy conveniente y también es mucho más fácil leer el código y entendemos exactamente al leer el código cuál es ese potencial y, por supuesto, lo rechazamos también tenemos eso, así que tenemos algunos de ellos rango de nombres también tengo algunos rangos con nombre para th El personal incluye una identificación de personal que también es, por supuesto, un rango con nombre dinámico, lo mismo con un nombre de personal y lo mismo con la posición del personal, está bien, tenemos esos rangos con nombre y también quiero saber el supervisor del personal, así que esos son rangos de nombres basados en eso y tengo un derecho de estado. Quiero saber cuál es el estado de todas las ramas de nombres de estados de documentos para eso y luego, por supuesto, uno para los tipos de flujo de trabajo. Esos son los tipos de flujo de trabajo en el administrador nuevamente usando compensación para que nuestros tipos de flujo de trabajo crezcan. también lo hace para que podamos agregar y actualizar los tipos de flujo de trabajo, se vincularán automáticamente aquí, así que, ¿cómo lo hacemos bien? Simplemente lo vinculamos, lo que sea que se encuentre aquí . Básicamente, vinculé esta lista. Básicamente, copié esta lista y pegué los enlaces directamente aquí . cantidad aquí th vamos a hacernos saber que necesitamos saber eso, entonces, ¿cómo vamos a contar eso? Podemos simplemente usar los tipos de documentos countifs ifs en función de lo que d16 es correcto. Quiero saber todos los tipos de documentos para d16 pero no cada uno de ellos . porque no quiero excluir aquellos que han sido definitivos, si están finalizados, no quiero incluirlos, así que lo mejor que se puede hacer es básicamente contar si todos los demás criterios para el segundo serían el documento. el estado no es igual a final esto es ese rango con nombre rango con nombre recuerda que tenemos un rango de nombre llamado final así que márcalo cuando retrocedas esto comenzaría a escribir vemos que es ese rango con nombre recuerda que es el mismo rango de nombre que usé aquí así que haga clic en finalizar, vemos que es final aquí, por eso es mucho más fácil usar fórmulas, mucho más fácil usar código porque podemos verlo claramente, por lo que tiene mucho más sentido en lugar de conectar eso con una sola celda donde es posible que no sepamos dónde está eso celular es tan básicamente todo lo que estamos usando son contadores que nos permitirán contar todos los que necesitamos correctamente y si es 0, no mostraremos nada, así es como contamos, también se basa en recordar todo lo que estamos basando en todas las órdenes de venta están todos los que están para esto, pero no incluyen nada que se haya finalizado correctamente, el estado no está financiado, eso es todo, eso es todo lo que tenemos que hacer aquí ahora tengo información en las columnas a y b para el administrador esto generalmente está oculto y repasemos algunos de los campos aquí, así que lo que quiero saber es cuando selecciono el documento, cuántos campos completaron algunos de estos cuando hago clic en un nuevo documento, necesito saber que tengo cinco campos. que van a ser necesarios nombre del documento el creador un tipo de flujo de trabajo solicitado ahora dentro del código que podría hacer si f3 es igual a vacío o h3 es igual a vacío o sabe que es mucho código o lo que puedo hacer es simplemente contar las celdas de aquellos que contienen texto y los ponemos en un número y podemos usar countif para th a la derecha, tan pronto como agregue uno, contará eso y tengo esa fórmula aquí ubicada en b1, lo que vamos a hacer es contar a y eso básicamente es contar todo el texto de las siguientes celdas cuentan las celdas que contienen el texto , por lo que de estas cinco celdas las vamos a contar ahora mismo sabemos que tenemos una de ellas completada si seleccionamos un documento específico aquí vemos que las cinco han sido completadas y por lo tanto, es 5. De esa manera, en vba, todo lo que debemos hacer para asegurarnos de que se completen esos cinco campos obligatorios es simplemente decir si b1 no es igual a 5, luego infórmele al usuario, algo así y también usamos formato condicional para llamar estos amarillos para que el formato condicional tan pronto como veamos un nuevo documento tan pronto como lo llenemos se irá a blanco que está usando formato condicional y básicamente acabamos de aplicar un solo formato condicional a varias celdas aquí, de hecho, probablemente solo necesite uno solo aquí y eliminaré uno y dou ble arriba, así que básicamente esta fórmula es solo para estas celdas correctas e incluiré esta también aquí, así que todo lo que tenemos que hacer es seleccionar las celdas aquí y asegurarnos de que si están en blanco, la celda contiene un valor en blanco entonces quiero llamarlo amarillo, así que cuando editamos la regla, vemos que su celda contiene espacios en blanco y vamos a formatear ese amarillo, eso es todo lo que tenemos que hacer bien, así que tan pronto como seleccionemos algo , vemos que todos se vuelven blancos. bien, eso es todo, tenemos que ahora tenemos una identificación de documento que vba coloca cuando selecciono un documento, esa identificación de documento cambia, necesitamos saber esa identificación de documento que es la identificación que se encuentra aquí, así que si sigue cualquiera de mis capacitaciones esto se verá un poco familiar esto combina una gran cantidad de capacitación como el kanban que creamos hace unas semanas una gran capacitación combina miniaturas que creamos hace un tiempo combina la programación de arrastrar y soltar que hemos creado tan básicamente podemos combinar todas esas habilidades para m Haga una aplicación muy poderosa, así que obtuvimos la identificación del documento. Ahora necesito saber la fila del documento correctamente. Necesito saber que 7 id 7 está en la fila 10. Entonces, ¿cómo sé eso ? vamos a usar if air en caso de que no coincida vamos a hacer coincidir b2 lo que sea que esté en b2 esa es la identificación basada en el nombre durante este documento es y queremos una coincidencia exacta estamos agregando 3 porque sabemos que nuestro primero comienza en la fila cuatro, por lo que siempre necesitamos ese tres porque no estoy buscando uno, estoy buscando el número de fila, en ese caso, sería cuatro si se seleccionara uno, está bien, también quiero saber el miniatura recuerde que para cada documento vamos a crear una miniatura es esa imagen en miniatura que aparecerá dentro de esta forma aquí necesito hacer un seguimiento de esa miniatura voy a poner eso en b5 está bien también quiero saber el identificación del personal original, esto podría ser útil para avanzar, por lo que la identificación del personal original simplemente se está ocupando de eso, vamos a usar ind por ejemplo, vamos a indexar esa identificación del personal, vamos a ejecutar una coincidencia basada en el nombre del personal ubicado en h3, vamos a ejecutar esa coincidencia en función del rango nombrado y queremos una coincidencia exacta en la columna uno si hay un error, se mostrará en blanco, así que nos dará la identificación del personal. También quiero saber el original , se llama la fila del originador. supervisor correcto, entonces quiero saber todas esas cosas y quiero que sea porque eso nos ayudará a seguir adelante, así que queremos que toda esa información aquí se muestre aquí para obtener esa fila nuevamente, simplemente usaremos una coincidencia en este caso, lo estamos basando en la tabla de personal, por lo que vamos a agregar 2 , ¿por qué agregamos 2 en este caso cuando encuentro que la lista de personal notó que nuestra primera comienza en la fila 3 ? sé que sumar 2 para obtener 3 nos ayudará con la fila, así que sabemos y también quiero para saber cuál es su supervisor ahora, quiero saber su posición, vamos a usar el índice, no necesariamente, no necesitamos todos estos campos, pero son muy útiles para cuando agregamos funciones, así que quiero saber su posición actual cuál es su posición entonces vamos a usar vamos a ejecutar un índice basado en su posición ese es el rango con nombre que creamos usamos una coincidencia basada en el nombre del personal que nos dará su posición yo también quiere saber cuál es su supervisor, recuerde dentro de cada personal que contenga un puesto que contenga un supervisor, a menos que esté en la parte superior del supervisor y también tenemos correo electrónico, una imagen y un montón de otras cosas, así que esto es todo para el personal cuando cambiamos el personal aquí , sabemos que vamos a actualizarlo automáticamente, está bien, así que todo se actualizará de acuerdo , también quiero saber información para el personal que está revisando eso, el personal, si cambio, digamos. cambiamos vamos a Ay, tenemos a Debbie y , en este caso, está revisando a su gerente, Tina James, está revisando que simplemente están configurados para revisión pendiente, ¿verdad? Está esperando que Tina revise eso, así que queremos saber su información, así que quiero saber el número de identificación del personal de Tina. al usar la coincidencia de índice, también quiero saber la ruta donde se encuentra stina tina y el personal y qué puesto tiene y quién es su supervisor, así que también quiero saber eso, está bien, también quiero saber la base de datos de revisión seleccionada cuando selecciono una revisión, es posible que desee editar una de estas revisiones para poder seleccionarla y aparecerá aquí, por lo que es muy, muy importante, necesitamos saber eso, así que necesito saber qué fila está seleccionada en este caso va a decir nosotros esa fila en este caso 5 va a aparecer aquí dentro que es 17 esta base de datos de revisión seleccionada es la fila de la base de datos que está ubicada a la derecha, así que básicamente guardamos este 34 en una base de datos aquí ubicada en la fila 34. mire ese siete cierto, ese es el id 30k hopkins y pendiente r eview, esa es la fila de la base de datos donde se encuentra si necesitamos hacer una actualización, necesito saber esa revisión, necesito saber la base de datos correctamente, entonces, ¿cuál es la base de datos aquí? Entonces esto hace un seguimiento de los días de esa manera si hago una actualización bien, si digo notas de prueba y hago esa actualización, se guardará automáticamente cuando actualicemos eso en la fila 64. Así que miramos la fila 64 aquí y podemos ver que esas notas se han guardado aquí mismo en la fila 64. entonces necesitamos para saber en qué fila y columna guardar eso, tenemos 64 y conocemos la fila, así que eso es muy, muy importante , está bien, tenemos que tener la fila de la base de datos ahora también tenemos el seleccionado Aquí es donde entramos en el seleccionado Fila de flujo a la derecha ¿Cuál es la fila de flujo seleccionada cuando selecciono aquí? Necesito saber cuál es nuestro derecho seleccionado. Recuerde que tenemos un flujo de trabajo diferente y tengo un formato condicional que aparece a la derecha, así que necesito saber qué fila aparece. 18 correcto, por lo que necesitamos saber qué fila porque es formato condicional es nos va a ayudar y nuevamente tengo un formato condicional basado en estos dos simplemente basado en la fila seleccionada, así que como puede ver aquí, b15 es igual a rho, ese es el formato que le hemos dado a ese fondo oscuro junto con la fuente en negrita blanca que es el que usamos y se va a aplicar de d a e, por lo que se aplica a todo bien, así que necesitamos saber esa fila, necesito saber qué tipo de fila dos, a la derecha, observe que hay un tipo específico, este es un tipo de fila, ¿cómo lo hacemos? sé lo que es correcto tiempo libre es uno lo que quiero decir uno aquí es el primer tipo segundo tipo tercer tipo correcto quiero saber eso porque voy a tener que extraer esa información, así que necesito saber el tipo de fila así que esa es la fila eso está ubicado básicamente en dos tres cuatro, así que continúa y luego está bien la fila de revisión seleccionada aquí es donde entra esa revisión aquí mismo cuando seleccionamos, simplemente repasamos que esa es la fila que vamos a usar si seleccionamos algo que revise la fila 6 porque el formato condicional aquí es ir ing para ayudarnos a resaltar que la fila b17 b17 es igual al formato condicional de fila nuevamente ayúdanos a reconocer qué fila seleccionamos en este caso es b17 está bien, lo último que será útil cuando pasemos por la macro de arrastrar y soltar justo cuando seleccione un grupo específico ahora quiero saber la posición izquierda y la posición superior porque si se ha movido necesito reconocer que ha habido un movimiento necesito saber que se ha cambiado y necesito actualizarlo y actualizarlo automáticamente y no todo tan repasaré eso contigo muy, muy simple, lo creas o no, así que continuemos para que entendamos el formato básico de toda esta aplicación, entendemos que podemos hacer eso, repasemos algunos de los tipos básicos de macros y nosotros tenemos la capacidad de abrir de nuevo como mencionamos, podemos abrir cualquier pdf así y también podemos buscar nuevos documentos correctamente, así que repasemos las macros y tenemos ambas para el documento original aquí tenemos las mismas macros similares f o la revisión, si quiero cargar una revisión, puedo hacer la revisión del cargador así y se cargará automáticamente una vez que guarde y actualice, se guardará en eso, por lo que cada revisión específica de la sugerencia tiene esa capacidad, entonces, ¿cómo vamos? para hacer eso bien, echemos un vistazo dentro de la pestaña de desarrolladores de vba visual basic o alt f11 es el atajo allí tenemos macros de archivo de documento estas son las macros para el archivo de documento está bien, todos van a usar una variable muy similar entonces podemos dimensionar todos los de arriba aquí necesito conocer la carpeta de miniaturas y necesito conocer la carpeta de documentos correctamente esas son las dos carpetas en las que nos vamos a centrar en sus documentos y miniaturas debemos asegurarnos de que estén colocadas dentro del administrador, si necesito guardar esos documentos y guardar esas miniaturas, necesito saber en qué carpeta colocarlos, así que debemos asegurarnos de que sean precisos, así que también necesito saber el nombre completo del archivo y necesito saber el ruta completa del archivo también quiero t Saber qué tipo de archivo será útil cuando cree esas miniaturas. Necesito saber qué tipo de archivo porque también podemos crear miniaturas basadas en documentos de Word. Quiero crear eso en miniatura. Te mostraré cómo funciona todo . lo que tenemos que hacer es buscar que tenemos un documento de Word aquí, simplemente haga clic en Aceptar, se crearán automáticamente para el documento de Word y todo lo que tenemos que hacer es simplemente actualizar, guardar o actualizar, se actualizará automáticamente y vemos ahora que ese documento de Word hasta aquí abajo, este de aquí es el que tenemos, así que este es el que acabamos de crear cuando lo abrimos, veremos que abrirá un documento de Word automáticamente aquí y luego eso sea ​​así, incluso podemos abrir documentos de Word, muchas características realmente geniales aquí, así que continuamos, ¿cómo vamos a hacer eso? Necesitamos el tipo de archivo. Necesito la ruta de la miniatura . Necesito el nombre de la miniatura como cadena correcta, necesito saber el nombre de la miniatura y necesito conocer la carpeta del documento como un cuadro de diálogo de archivo y el gráfico de objetos es un gráfico porque necesitamos crear esos gráficos que nos ayudarán a crear esas miniaturas, así que lo primero que quiero hacer es ejecutar una macro justo antes de crear Creo una macro solo para verificar las fotos. Ejecutaré esta macro cada vez que lo hagamos, así que queremos asegurarnos de que el usuario haya subido las carpetas adecuadas tanto para las miniaturas como para los documentos, así que lo primero que va es la carpeta del documento. para estar basado en d3, entonces vamos a agregarle la barra invertida, esa es nuestra carpeta de documentos compartidos, el directorio, la carpeta de documentos es igual a vacío o el ejemplo de la carpeta de documentos, infórmele al usuario, configure una carpeta de documentos compartida en la pantalla de administración, está bien, también nosotros vamos a hacer lo mismo para la miniatura que se encuentra en d4, solo vamos a verificar y asegurarnos de que tenga una ruta de archivo precisa, si no, le informaremos al usuario, así que eso es todo, así que todos nosotros necesita hacer cada vez que navegamos es ju st para ejecutar esta macro y la primera es que quiero buscar el documento original que es la macro que se ha vinculado a esto si hacemos clic con el botón derecho en cualquier forma específica dentro del grupo y, por supuesto, hacemos clic en asignar la macro que vemos que es este navegador original que hemos creado, así que navegar original es el primero que vamos a ejecutar, vamos a ejecutar la verificación de macros para las carpetas como lo hacemos todos y cada uno, vamos a configurar el archivo doc como el archivo de la aplicación selector de archivos de diálogo mso estamos eligiendo un archivo, no una carpeta, por lo que este será un archivo y con el archivo doc quiero asignar un título, busque el documento original y vamos a permitir el aviso de selección múltiple que no hay filtro Aquí no, no, ya sabes, a veces agregamos filtros de imagen o, a veces, carpetas PDF o documentos de texto. No hay filtro. Permitimos que el usuario cargue cualquier tipo de documento y eso es muy útil con esto. Vamos al nombre del archivo. para basarse en el directorio del elemento seleccionado, entonces, ¿qué es eso? Lo que hay que hacer es extraer solo el nombre del archivo, no la ruta completa del archivo, solo el nombre del archivo. Esta es la ruta completa del archivo aquí. Elementos seleccionados. Uno que es la ruta completa del archivo, pero el directorio de ese es el nombre del archivo . nombre de archivo con extensión, mi tecla de acceso rápido automático termina cada vez que escribo y dice fin, lo cual es útil por lo general, pero no siempre, flujos de trabajo, ese es nuestro nombre de hoja, nuestro nombre de hoja aquí, esto se llama nuestra hoja de flujo de trabajo basada en vba h5 es igual a nombre de archivo, así que quiero tomar ese nombre de archivo, lo pondré directamente dentro de h5 una vez que tenga eso, quiero verificar si existe, quiero tomar este archivo de donde venga el usuario, pero quiero ponerlo en un carpeta específica quiero ponerlo en esta carpeta de documentos, pero si ya existe dentro de esta carpeta de documentos, quiero asegurarme de que lo eliminemos, así que verificamos con una sola línea de código si el nombre del archivo del documento del directorio directorio vb no es igual vacío eso significa que ya está en nuestra carpeta doc más nuestro nombre de archivo, combínelos como nuestra ruta de archivo completa si existe no es igual a np, entonces debemos eliminarlo porque estamos a punto de copiarlo desde donde se encuentre desde donde el usuario lo haya buscado nosotros vamos a copiarlo en nuestra carpeta designada una vez que esta carpeta se comparta, se compartirá con todos los usuarios , por lo que queremos eliminarlo, lo que significa básicamente eliminar si ya existe eliminar si ya existe para que una vez que se elimine podamos entonces cópielo vamos a usar la copia de archivo muy fácil vamos a usar el elemento seleccionado recuerde que esta es nuestra ruta de archivo completa de su ubicación original lo vamos a copiar básicamente quiero copiarlo a nuestra carpeta de documentos y nuestro nombre de archivo no olvide que nos hemos asegurado de agregar siempre la barra diagonal inversa porque nuestras barras diagonales inversas no están ubicadas pero se agregan automáticamente aquí dentro de aquí, así que una vez que ejecutamos esto creamos esto aquí esto crea automáticamente estas variables aquí y lo comprobamos aquí porque ya que también están automatizados, son constantes aquí arriba, así que eso lo creará automáticamente y luego lo haremos, lo copiaremos y luego ejecutaremos nuestra macro llamada crear miniatura y Repasaré esa macro en un momento, luego lo que quiero hacer es buscar la revisión. Esta macro es la macro que vamos a ejecutar. Es exactamente igual . Todo es igual. La única diferencia es que nosotros. básicamente lo pondremos en esta celda h9 y no vamos a generar una miniatura de la revisión, estará solo en el nombre del archivo original, así que todo lo que hacemos es simplemente girar la única diferencia nuevamente h9 es donde ese nombre de archivo se va a ubicar y vamos a copiar el archivo tal como lo hicimos aquí bien, entonces, ¿qué pasa si queremos abrir un documento, abrir el original, abrir el documento revisado, así que todo lo que tengo que hacer si quiero abrir ese debbie? tiempo libre quiero abrir aquí va a abrir eso o tal vez si quiero abrir nuestro ya lo hicimos que el documento de Word podemos hacer eso aquí, por lo que requiere una macro muy simple, así que, independientemente de abrir el original, en primer lugar, quiero asegurarme de que h5 no esté vacío si por alguna razón h5 está vacío como lo está aquí en cualquier momento. ábralo, no quiero que suceda nada, así que cuando haga clic en abrir, no pasará nada, así que si h5 está vacío o h9 en la revisión, salga del sub, buscaré carpetas para asegurarme de que sean precisas . macro, vamos a determinar la ruta del archivo, será el administrador d3 correcto, también podríamos simplemente usar porque ya hemos ejecutado verificar carpetas, también podemos usar la carpeta de documentos aquí, la carpeta document doc estaría bien y el h5 vamos hacer esa carpeta doc carpeta doc va a terminar h5 por lo que la combinación va a abrir el original así que cuando quiero abrir el original solo hago clic en abrir y va a abrir automáticamente ese documento original vamos a hacer lo mismo para esta es la última línea de código para abrir este libro de trabajo para Permita la ruta del archivo del hipervínculo. Tenemos la ruta completa del archivo basada en la carpeta de documentos aquí en el flujo de trabajo. Esta es la ruta completa del archivo. Eso es todo lo que necesitamos junto con los hipervínculos de seguimiento . ábralo, abra cualquiera que sea el documento, luego, en función de la revisión, haremos exactamente lo mismo, exactamente lo mismo, excepto que estamos originando nuestro nombre de archivo desde h9, todo lo demás es igual, está bien, así que ahora lo que vamos a hacer. hacer es vamos a crear miniaturas déjame mostrarte eso una vez más antes de decirlo así que básicamente si quiero crear una miniatura voy a buscar un archivo específico digamos tiempo libre Tammy derecho y lo que quiero hacer es hacer clic en abrir y eso automáticamente creará eso para esta factura siete aviso cuando guardo y actualizo esa solicitud de factura siete ahora se actualizará automáticamente vea cómo eso vio cómo se ve diferente cerca de esa miniatura cuando abrimos que vemos que es lo basico ly el tiempo libre aquí y creamos una miniatura para eso, vamos a usar esa miniatura dentro de esa forma, así que todo lo que tenemos que hacer son unas pocas líneas de código y te mostraré cómo hacer eso primero. Lo que haremos, por supuesto, es que vamos a verificar esas carpetas. Quiero asegurarme de que las carpetas sean precisas. Bien, lo siguiente que vamos a enfocarnos en nuestra hoja de flujos de trabajo es que con nuestro flujo de trabajo c vamos a hacer un poco y eso es todo, así que saquemos esto un poco así que lo primero que quiero básicamente es detener la actualización de la pantalla podemos hacer la actualización de la pantalla de la aplicación es igual a falso eso hará que las cosas sean mucho más rápidas y no parpadearán como Por mucho que vamos a configurar esa carpeta de documentos en función del valor d3 en la barra invertida, ya debería estar hecho aquí en caso de que la carpeta de miniaturas sea lo mismo d4. Vamos a configurar ese archivo compartido. Quiero asegurarme de que estén configurados . corrija el nombre del archivo. ¿Cuál es ese nombre de archivo? Se basará en el valor h5. Recuerde que este es el uno que estamos creando necesitamos crear esa ruta de archivo completa si es un pdf básicamente nuestra carpeta aquí aquí combinada con nuestra ruta se combina con nuestro nombre de archivo va a crear esa ruta de archivo completa vamos a poner eso en una variable llamado nombre de archivo , también quiero saber cuál es el tipo de archivo. Quiero extraer que esta es una variable de cadena y no lo extraeré, ya sea pdf dot word o lo que sea dot jpeg, quiero extraerlo de la mejor manera . para hacer eso, queremos encontrar el último punto aquí está el último punto porque ese nombre de archivo podría contener puntos, por lo que queremos usar en cadena inversa, lo que significa que comenzará al final y trabajará hacia atrás al revolver inversa es un gran comando cuando queremos comenzar al final al revés cuando queremos movernos de derecha a izquierda cuando queremos movernos cuando queremos encontrar una cadena y queremos movernos de izquierda a derecha vamos a usar en cadena pero queremos usar ir al revés en cadena inversa, así que lo que voy a hacer es voy a si quiero ubicar dentro de ese nombre de archivo dónde se encuentra ese período, así que una vez que se haya encontrado, me dará el número de carácter específico que se encontró, así que digamos que tenemos una cadena de texto de 20 caracteres y se encontró en el Posición 17, eso lo dirá, entonces, ¿qué hacemos? Tomaremos toda la longitud, digamos 20, y restaremos 17, lo que nos dejará con tres. Entonces, ¿qué quiero hacer? es que quiero encontrar los tres caracteres correctos que me dejarán con los tres caracteres correctos de esto y los colocará en una cadena llamada tipo de archivo, eso es lo que quiero, solo quiero que si es una extensión de cuatro dígitos es También encontraré eso porque esto se basa en ese período, así que si son tres o cuatro, estará bien, entonces lo que quiero hacer es determinar la ruta del archivo, la ruta completa del archivo lo puso allí y eso básicamente va a estar en la carpeta de documentos junto con th Supongo que podría poner un nombre de archivo en esto porque ya lo tengo dentro de ese nombre de archivo y esa será la ruta del archivo del documento una vez que lo tengamos, lo que quiero hacer es hacer lo mismo para la miniatura. la miniatura va a ser básicamente también quiero eso , así que voy a reemplazar eso y lo que quiero hacer es crear un nombre único para la miniatura para hacer eso, lo que quiero hacer es asegurarme que vamos a reemplazarlo el nombre del archivo en este caso vamos a usar el nombre del archivo voy a buscar el punto y luego primero que nada voy a reemplazarlo con nada no quiero incluir ese punto cierto, quiero excluirlo, así que una vez que lo elimine del nombre del archivo, agregaré un guión bajo en miniatura.jpg, esa miniatura será jpg, así que agregaremos la extensión de archivo para eso, así que tenemos nuestro nombre en miniatura, así que tenemos nuestro nombre en miniatura , básicamente tomará el nombre del archivo actual, eliminando el punto y un agregando una miniatura de subrayado para que podamos hacerlo dándole un nombre único, luego necesitamos construir la ruta completa para que la ruta sea la carpeta de miniaturas más el nombre de la miniatura que nos dará la ruta completa del archivo de la miniatura en función de nuestra carpeta de miniaturas, ¿de acuerdo? entonces lo que quiero hacer es determinar según el tipo de archivo, hay algunas cosas diferentes si es un pdf, debemos hacer algo, si es una imagen, debemos hacer algo, así que si es una imagen, debemos hacer algo. si es un pdf o una palabra, podemos hacer otra cosa, entonces, ¿qué hacemos si es un png, jpg, jpg, bmp o tiff, entonces sabemos que es una imagen, luego un archivo de imagen, de lo contrario, probablemente será una palabra o un pdf, una palabra o un pdf ? o pdf, probablemente si trabajaría con Excel también está bien, así que lo que queremos hacer ahora si es una imagen, lo que voy a hacer es insertar esa imagen, las imágenes de puntos ya estaban dentro de la hoja, las imágenes de puntos, insertar la ruta del archivo, así que básicamente tomando toda la ruta de esa imagen e insertarla en nuestra hoja de trabajo, lo que haremos de inmediato es asignar un nombre específico para esa imagen, lo llamaremos documento miniatura , de lo contrario, si es una palabra o un pdf, entonces quiero crear un objeto llamado objetos viejos vamos a agregar un objeto completamente nuevo a nuestra hoja de trabajo le vamos a dar el nombre lo vamos a agregar lo vamos a usar basándonos en la ruta del archivo que es nuestro nombre de archivo correcto eso es cómo sabemos que necesita abrir ese documento y crear ese objeto, por lo que debe conocer la ruta completa del archivo aquí, no necesariamente necesitamos vincularlo y no queremos mostrarlo como un ícono que queremos muéstrelo como el objeto completo, ya sea la palabra completa o el pliegue, así que básicamente abre un pdf o abre un documento de Word directamente dentro de Excel, de modo que una vez que hagamos eso y luego lo que vamos a hacer es vamos para darle a ese objeto un nombre específico, ese objeto tendrá el mismo nombre, ya sea para una imagen o para ese pdf o word noti ce, es el mismo nombre, de esa manera podemos trabajar con él independientemente de seguir adelante, independientemente de si es una imagen, pdf o word, podemos trabajar con él exactamente igual, eso es todo lo que tenemos que hacer para diferenciar solo estas tres líneas de código y luego lo que queremos. que hacer es establecer un gráfico de objetos sin importar si es una imagen o una palabra vamos a crear un gráfico de objetos un gráfico vamos a configurar ese llamado gráfico de objetos que es el que hemos definido aquí arriba el camino hasta aquí como gráfico de objetos como un objeto, entonces lo que vamos a hacer es crear ese objeto aquí, será básicamente objetos de gráfico 200 por esto es solo la posición, la posición izquierda, el centro , la derecha posición superior creo que solo la posición la posición no importa demasiado porque la vamos a eliminar en un momento qué queremos insertar bien quiero darle un ancho específico cuál es el ancho de eso quiero darle exactamente el mismo ancho que cualquiera que sea nuestra forma sea lo que sea que sea un documento de Word s o le daremos un ancho específico, también le daremos una altura específica, la altura de ese gráfico será exactamente la misma que la imagen o el pdf o lo que sea, así que estamos creando ese objeto eso es exactamente del mismo tamaño entonces lo que vamos a hacer es tomar esa forma ya sea de nuevo una palabra o un pdf vamos a copiar que vamos a pegarlo directamente en el gráfico la razón hacemos esto si excel no nos permite guardar una imagen, la única forma en que lo hace es si la colocamos en un gráfico una vez que está en un gráfico y luego podemos guardarla como una imagen, así que eso es lo que haremos una vez copiamos la imagen vamos a copiar la forma vamos a activar ese gráfico luego vamos a pegar esa imagen en particular dentro del gráfico recuerda que ambos tienen el mismo tamaño ahora nuestra imagen y nuestro gráfico son exactamente iguales lo mismo, así que cuando lo peguemos allí, será perfecto, entonces todo lo que tenemos que hacer una vez que lo tengamos, todo lo que tenemos que hacer es exportar ese gráfico en un archivo, pero quiero asegurarme de que si exportamos ese gráfico a un archivo, ese nombre de archivo aún no existe, por lo que debemos verificar si existe, debemos eliminarlo para poder hacerlo con esta línea de código si el directorio vb de la ruta de la miniatura no es igual a vacío, entonces debemos eliminarlo una vez que lo hayamos eliminado, si existe, entonces lo que podemos hacer es ejecutar esa exportación, por lo que todo lo que vamos a hacer es tome ese gráfico activo, lo hemos activado aquí, lo exportaremos según el nombre del archivo, la ruta del archivo en miniatura y lo exportaremos como un jpeg , eso es todo lo que tenemos que hacer, luego se crea esa imagen y ahora está en nuestra foto, por lo que se parece a esto una vez que se crea, se parece bastante a esto aquí, las miniaturas aquí, un montón de imágenes es todo lo que tenemos y podría usar incluso camisetas o imágenes o cualquiera que sea mi prueba, así que crear esos hay pequeñas miniaturas aquí, así que las hemos creado ahora, lo que podemos hacer es eliminar nuestro uso para ese gráfico ha terminado ahora podemos eliminar el gráfico también podemos eliminar la imagen esa imagen que creamos aquí o aquí también podemos eliminar eso también no necesitamos ninguno de esos nuestro propósito es simplemente guardarlo como un archivo y luego también vamos a establecer ese nombre de archivo de miniatura en b5. Quiero que b5 nos asegure de guardar esa miniatura y eso la ubicará aquí mismo en b5 para que notemos el nombre. tenemos ese guión bajo, luego tenemos el punto de pulgar jpg, así que ese es exactamente el nombre que le hemos dado, entonces todo lo que tenemos que hacer es cuál en la macro que revisaré pronto una vez que lo carguemos todo lo que tenemos que hacer es incrustar esa imagen en particular dentro de una forma, tenemos una forma de muestra aquí , todo lo que tenemos que hacer es hacer eso, por lo que es relativamente fácil, bueno, ahora hemos repasado todas las macros que tenemos en nuestro archivo de documento macros eso es todo lo que tiene que hacer para eso, eso nos permitirá buscar archivos, nos permitirá abrir archivos y va a permitir que esto cree miniaturas basadas en casi cualquier tipo de documento, está bien, fantástico, ahora quiero repasar algunas de las macros que pueden permitirnos guardar una actualización de un nuevo documento o tal vez incluso eliminar un documento, está bien, entonces, ¿cómo vamos a hacerlo? haga eso, así que si queremos eliminar un documento, podemos, pero por ahora solo vamos a decir que no, así que esas son algunas macros relativamente y, básicamente, todo lo que quiero hacer es guardar esta información en esta tabla y también quiero guardar lo que sea revise cualquiera que sea la revisión actual, quiero guardar esa información también en esto y lo único es que debemos asegurarnos de que en esta sea una revisión existente o es una revisión nueva, así que debemos asegurarnos de que se basará en la base de datos, como si selecciono uno específico, sabemos que tiene una base de datos específica aquí, por lo que si necesitamos hacer un cambio como prueba, podemos hacer ese cambio de prueba aquí y podemos hacer esa actualización simplemente guardando, está bien, entonces necesitamos para saber algunas cosas entremos ahora vamos Voy a usar el mapeo de datos y, básicamente, lo que quiero hacer es mapear todas estas celdas, incluida la identificación del documento, incluida la miniatura y algunas otras, quiero mapearlas en la base de datos y he hecho exactamente eso aquí. he terminado antes básicamente b2 es ese documento id f3 de esa página aquí ubicada aquí está justo aquí f3 y nuestro creador en h3 así que básicamente vamos a cada columna que hemos mapeado y lo que eso nos permite hacer es ejecutar un ciclo desde 2 hasta el último, lo que sea que esté en f3, coloque en nuestra fila, lo que sea que esté en j3, coloque en una fila, ¿cuál es esa fila?, esa fila podría basarse en si es un documento nuevo o un documento existente, ejemplo si es un nuevo documento, este estará vacío, si he seleccionado uno existente, ya tenemos una fila, pero si hago clic en nuevo documento, no tendremos ninguna fila en b3, así que dentro de esa macro necesito determinar si b3 contiene un valor o no, así que vamos a hacerlo bien, así que entremos en algunas de estas macros de documentos y eso es aquí, así que tenemos guardar y actualizar, en lo que vamos a entrar y también tenemos revisión de carga y también tenemos nuevo, así que lo primero que haremos en orden será más fácil y, por supuesto, vamos a Comencemos con algunas variables. Tenemos la fila del documento como una larga columna del documento. Tenemos la última columna y repasaré esta última fila de resultados . esos y la identificación del documento es una cadena que podría ser una cadena variable larga y la cadena del supervisor está bien, lo primero que quiero hacer básicamente es solo quiero con los flujos de trabajo que quiero crear, borrar para nuestro nuevo todos los campos que son asociado con eso, básicamente en todas las tablas, así que queremos cuando seleccionamos cuando hago clic en Agregar nuevo documento. almacenado aquí, así que si tengo un cambio específico sé si voy a para cargar eso, necesito saber en qué filas de la base de datos se encuentra esto, sé que es 46, recuerde que es la fila de la base de datos que se encuentra aquí 46. Si necesito guardarla, necesito saber en qué fila se encuentra la fila de la base de datos si hacemos un cambio. como ese cambio de prueba, necesito saber qué fila colocar para que esa fila venga directamente de r y se coloque directamente dentro de b14, está bien, entonces necesitamos saber eso, así que necesitamos borrar toda esa información que también quiero para saber si el código de nombre de la hoja activa en caso de que estemos ejecutando esta macro desde otra hoja, seleccione f3 que permitirá automáticamente cuando hagamos clic en nuevos documentos, seleccione f3, que es el primero, dándole un nombre por el que preguntamos si fuera como si tuviera que seleccionar esto e intentar ejecutar esta macro, no generará un error, pero si lo hizo, por ejemplo, digamos que intenté ejecutarlo así, a veces ejecuta una lista y obtiene un error y usted no sé por qué es como por qué acabo de recibir ese error funcionó ser El reloj delantero derecho termina ahora cuando selecciono esta hoja. Los flujos de trabajo vuelven aquí y ejecuto esto. Se ejecutará sin problemas. ¿Por qué? ¿Por qué? ¿Por qué tuvo un error una vez y no la otra ? seleccione una celda en una hoja si esa hoja no está activa si activo otra hoja y trato de ejecutar esa macro correctamente, automáticamente creará un error, por lo que siempre queremos la mejor manera cuando cada vez que usa seleccionar es realmente mejor para verifique automáticamente para asegurarse de que la hoja sea la misma si el nombre en clave de la hoja activa es igual a los flujos de trabajo solo luego seleccione ; de ​​lo contrario, podemos ignorarlo para evitar el error, así que ahora, si estoy en otra hoja y decido ejecutar esta macro, simplemente no va a seleccione f3 pero no creará un error, está bien, así que es bueno saber cuándo usa seleccionar porque he visto muchas de las preguntas en nuestro grupo acerca de que sabe que tiene problemas cuando llegamos a seleccionar, por lo que suele ser el caso cuando hay un error en la selección es porque no estás en el aire acondicionado tor que está tratando de seleccionar está bien, por lo que la documentación es relativamente simple, no hay mucho que hacer en la carga del documento cuando estamos cargando un documento nuevo, todo lo que vamos a hacer es borrar todas las celdas y queremos asegurarnos de que b3 no está vacío cuando selecciono un documento específico lo que vamos a hacer es colocar la identificación del documento ubicada aquí en b2 una vez que la coloquemos allí, generará una fila si no hay una fila asociada que sepamos que no podemos cargar nada, tenemos que tener esa fila de la base de datos de documentos que debería ser, llamemos a esta fila de la base de datos, haga que sea una base de datos un poco más clara, así que tenemos que tener esa fila de la base de datos de documentos, así que si está vacía, no podemos seguir adelante entonces, lo primero que queremos hacer es si b3 es igual a vacío, entonces asegúrese de seleccionar el documento del documento o flotar nada que podamos hacer para que podamos salir de sub vamos a asignar esa fila de documento a una base de datos y luego vamos a usar el mapeo de datos básicamente de dos a once ¿por qué si no comenzamos en uno, sería nuestro primer b2, ya tenemos eso, ya lo tenemos allí y les mostraré cómo lo conseguimos allí en un momento, pero podemos comenzar con las identificaciones de documentos que ya están allí para que podamos comenzar la columna dos básicamente todo lo que vamos a hacer es tener la fila dentro de una variable voy a mirar lo que sea que esté en la columna dos y lo colocaré en f3 vamos a mirar en la columna tres y vamos a colóquelo directamente en h3 para que revisemos estos para que podamos usar todo. Podemos cargar todos estos datos con mapeo de datos en solo una forma pequeña muy fácilmente. Tengo un video directamente solo sobre el mapeo de datos si quieres gastar un poco . más tiempo tengo eso llamado mapeo de datos, puedes buscar eso en mi canal, está bien, entonces tenemos eso, así que hemos cargado todos los datos, así que eso es relativamente pequeño ahora lo que no quiero hacer es no No quiero cargar nada que haya sido una fórmula si echamos un vistazo a nuestro personal de oficina aquí, notemos que tenemos aquí en b8 o let m Solo verifique dos veces la columna 10 en esa, asegúrese de obtener la correcta aquí, observe aquí en la columna 10, que es la posición del revisor b12 b12 b12 Quiero asegurarme de que esto se generó con una fórmula con una fórmula , así que echemos un vistazo a b12 observe que el administrador de la oficina se generó a través de una fórmula, lo que significa que quiero saber cuál es la posición de esta cosa y quiero saber cuándo lo guardo quiero tomar este administrador de la oficina y quiero colocarlo directamente aquí pero cuando lo cargo cuando lo cargo cuando quiero recuperar la información no necesito hacerlo bien porque todo lo que necesito hacer es traer a tina de vuelta y se actualizará automáticamente aquí si pongo a ese administrador de oficina en b12 va para borrar esta fórmula, no quiero que eso suceda, así que lo que no queremos hacer y eso será la columna 10. Observe que la columna es igual a esta es la columna 10. Entonces, si cambio la parte posterior a general, regular básicamente para la columna 10, no queremos cargarla, por lo que podríamos hacer una advertencia aquí si La columna del documento no es igual a 10, luego traiga la información y para hacer eso todo lo que tenemos que hacer es decir el rango esto es para los flujos de trabajo basados ​​en la fila uno este es el rango en la fila uno esto aquí la fila uno la columna del documento entonces cuál es ese rango el rango es h5 b5 f7 f9 así que ese es el rango y será igual a lo que sea que esté en la base de datos del documento la fila del documento y el valor de la celda eso es todo lo que tenemos que hacer para cargarlo eso va para cargar el documento en particular, está bien, así que cuando seleccionemos que va a cargar ese documento, también queremos cargar las revisiones, ahora vamos a ejecutar esto ahora, ambas macros se ejecutarán cuando seleccionemos, repasaremos eso solo tenga eso en cuenta cuando seleccionemos algo, revisaremos ese macro zoom, vamos a ir en orden para que esté organizado cuando haga una selección, dos macros se ejecutarán cuando seleccione este documento de carga que se cargará esta información y también quiero cargar estas revisiones también en t La próxima macro que se llama revisiones de carga de documentos . Quiero cargar todas esas revisiones, así que lo primero que quiero hacer es borrar el contenido de cualquier revisión que pueda estar aquí. Cualquier revisión está aquí, así que quiero l4 a n12. para borrar eso, también quiero borrar la fila de la base de datos asociada aquí cuando traigamos la información de las revisiones, básicamente vamos a ejecutar un filtro avanzado. Voy a traer todas estas revisiones, por lo general no lo hará. tengo tantas revisiones correctas y luego quiero traerlas quiero traer esta información aquí y quiero traer las filas aquí, así que vamos a traer eso aquí y también he estado haciendo muchas probando, así que tengo muchas revisiones allí, así que para hacer eso primero vamos a borrar la información, luego nos vamos a centrar en la base de datos de revisión, vamos a determinar la última fila y luego lo que lo que vamos a hacer es si la última fila es menos de tres vamos a salir vamos a publicar un anuncio filtro avanzado si bajamos esto un poco, echamos un vistazo, no mucho, vemos mi escritorio morado, está bien, así que lo que queremos hacer es ver este código en particular aquí e iré a la base de datos de revisión de documentos, así que básicamente nuestro avanzado filtro vamos a recorrer todo el camino desde a2 hasta g nuestro criterio será el 11 correcto ¿cómo conocemos bien nuestros criterios si vinculamos esto a nuestra identificación de documento solo queremos cargar esas revisiones basadas en un documento específico eso está vinculado a los flujos de trabajo b2, sabemos que esa es nuestra identificación de documento, el resultado será solo esas revisiones basadas en esa identificación de documento en particular, por lo que podemos ejecutarlo automáticamente dentro de nuestro dingo, así que echemos un vistazo aquí atrás aquí, aquí estamos, así que a2 a g en la última fila vamos a ejecutar un filtro avanzado vamos a copiar la información quiero establecer esos criterios basados ​​en l2 a l3 y quiero que esos resultados entren en n2 a q2 así que todos esos resultados entra ahora quiero determinar el ultimo resultado Fila por si acaso aquí, pero en este caso puede que no sea tan importante, también podríamos traerlo, en realidad no lo necesito aquí esta vez, ¿por qué es así? Bueno, no necesito ese hábito de tiempo. En este caso, solo tenemos un número máximo. de filas, así que en este caso solo voy a traer todo, normalmente no tendrás tantas, así que solo voy a traer todo, así que voy a decir l4 hasta 12, tenemos un número fijo no tenemos no lo tenemos debido a este diseño no lo tenemos si tuviéramos que mover esto podríamos tener un número ilimitado, pero quería guardarlos porque todos son dinámicos a medida que agregamos más, así que lo mantuve de esa manera, básicamente, solo tengo un número limitado de rutas que queremos mostrar, es suficiente, así que l4 a n12 es igual, básicamente vamos a establecer el número de filas, así que queremos 10 filas también desde aquí, así que solo vamos para configurar las primeras 10 filas aquí, será todo el camino hasta aquí, por lo que en este caso, de n3 a p12, lo hacemos solo en mi código l4 a través de n12 es igual a n3 a p11, entonces también queremos hacer eso con la base de datos 2 correcta, los flujos de trabajo r4 a r12 van a ser iguales a q3 a q11, por lo que también quiero traer estas filas de la base de datos al menos las 10 filas y traerlas directamente dentro de r aquí mismo, los traerá bien porque tenemos un número fijo de celdas, por lo que no necesitamos la última fila en este caso, no importa, no importa cuál sea la última fila en nuestros resultados porque solo vamos a traer 10, lo que debería ser suficiente según este diseño, está bien, tenemos las revisiones allí, así que ahora, ¿qué vamos a hacer? Quiero guardar y actualizar esto. ¿Cómo vamos a guardar y actualizar ? Bueno, de nuevo, quiero asegurarme de que, en primer lugar, tenemos todos nuestros campos obligatorios. Recuerde que lo repasamos, por lo que b1 tiene que ser cinco. Si tenemos algo menos, debemos informar al usuario si b1 no es igual a cinco, entonces simplemente hágales saber, asegúrese de completar todos los campos obligatorios, vamos a salir del El sub fuera de él ahora necesito determinar si este es un documento nuevo o si es un documento existente como mencionamos antes b3 nos dirá que si esa fila está vacía en base a un error, entonces sabemos que es un nuevo documento hay algunas cosas que debemos hacer si es un documento nuevo si es un documento nuevo necesito firmar la próxima identificación vamos a usar la fórmula máxima tenemos la fórmula aquí máximo de todas las identificaciones de documentos más 1 Si hay un error, quiero devolver 1. ¿Por qué habría un error? Bueno, habría un error si no hubiera datos, así que básicamente quiero determinar el máximo de estos, en este caso, el siguiente sería 19. Hay no hay datos en absoluto, solo devolveré 1. Habría un error, por lo que si hay un error, será 1. Eso nos dará el máximo de ellos y lo asignará , así que si es un documento nuevo, saber asignar una nueva identificación de documento y se basan en nuestra primera fila disponible en este caso 22. bien, lo haríamos si b3 está vacío, sabemos que es un nuevo documento ent , la fila del documento se basará en la primera fila disponible dentro de la base de datos del documento más una que es la última fila con el valor más una nuestra primera fila disponible también quiero obtener la siguiente identificación del documento y quiero colocarla a continuación identificación del documento directamente dentro de b2, vendrá directamente de b4, se colocará en b2, también quiero tomar esta próxima identificación del documento y la colocaré en la columna a aquí, está bien, así que lo hacemos con solo unos pocos las líneas de código aquí b2 tomarán b4 también la primera columna aquí la columna a y nuestra fila de documentos tomará b4 la próxima identificación del documento también quiero asegurarme de que f9 esté vacío que quiero iniciar sesión solo En caso de que no hayan agregado un revisor, lo que me gustaría hacer es agregar el creador actual al revisor actual antes, básicamente antes de que decidan asignarlo a otro revisor, se les asigna a ellos mismos y luego, si deciden, pueden arrastrar cambiarlo o moverlo al siguiente, pero primero es asignado actualmente a ellos cuando crea un documento que no se lo ha entregado a su gerente, pero aún está en su poder, por lo que desea asegurarse de asignarlo para que el revisor actual sea el autor si no lo han establecido, así que si f9 está vacío, entonces lo que vamos a hacer es simplemente tomar h9 y lo colocaremos directamente en f9, así que hacemos eso con esto si f9 es igual a vacío, simplemente no pongamos ningún administrador de revisores configurado y luego lo que vamos a hacer es configurar el revisor predeterminado para el personal actual, está bien f9, eso es solo para asegurarnos de configurarlo, está bien, si es un documento existente, vamos a hacer otra cosa, todo lo que necesitamos hacer es extraer la fila de lo que sea que esté en b3 , eso es todo, ya sea nuevo o existente, ahora el resto lo hacemos automáticamente para ambos, así que nuevamente vamos a usar el mapeo de datos de la misma manera que hicimos, pero esta vez es al revés, sea lo que sea ubicado dentro de nuestro rango justo aquí se colocará dentro de nuestra base de datos según el docum la fila ent y la columna del documento nuevamente, estamos recorriendo del 2 al 11 aquí desde el 2 porque nuestra identificación del documento ya está aquí, independientemente de si es nueva o existente, ya está aquí desde el 2 hasta la última fila e incluso donde la fórmula recuerda que no es necesario tener en cuenta el 10 porque lo estamos colocando aquí, no importa si es una fórmula, queremos los resultados desde 2 hasta 11 tomando lo que esté en f3 y colocándolo aquí lo que esté en h3 y colocándolo aquí o cualquier fila que hayamos configurado, de modo que se va a hacer con solo tres líneas de código a continuación, lo que quiero hacer es guardar la revisión del documento solo si la revisión existe, si f9 no está vacío, lo cual no debería ser. pero si es así, quiero guardar si f9 está vacío, quiero guardar la revisión, así que también tenemos que guardar eso dentro de nuestra revisión de documentos, debe guardarse, tal vez hayamos agregado una revisión aquí, debe guardarse en el primero disponible o si ya existe guardar en cualquier fila ¿cómo sabemos si esa revisión es existente o no bien, podemos mirar directamente a la fila de nuestra base de datos, sabemos si b14 es correcto, si hacemos clic en un nuevo documento , sabemos que b14 estará vacío, pero si hacemos clic en uno existente, también estará vacío, pero si hacemos clic una revisión existente, sabemos que va a contener esa fila de la base de datos, por lo que b 14 nos informará si existe o no, por lo que estará dentro del código si el valor de b14 es igual a vacío, entonces simplemente coloquemos una nueva fila de revisión. revisión simplemente coloque una nueva revisión , así que si es una nueva revisión, quiero obtener la primera fila disponible según nuestra base de datos de revisión y vamos a determinar eso entre la última fila, por supuesto, con un valor más uno y luego lo que quiero hacer es Lo mismo quiero colocar el conjunto que la fila de la base de datos b14 tomará en esa fila, recuerde que acabamos de crearlo, por lo que b14 tomará el primero disponible y luego también quiero hacer es quiero establecer la identificación que la identificación debe establecerse aquí dentro quiero saber ese documento en particular que d tenemos que colocar eso directamente en a para esos nuevos, por lo que a tomará lo que sea que esté en b2 configurando la identificación del documento. También quiero saber la fila en la que voy a poner eso. y la fila que son solo para nuevos, solo necesitamos configurar eso una vez y eso será para nuevas revisiones, por lo que se configurará en a y en g vamos a configurar esa fila, estamos configurando una fórmula y eso Si eliminamos una fila, la fila mantendrá la corrección , así que tenemos eso allí y ahora. ¿Qué pasa si es una fila existente? Entonces todo lo que tenemos que hacer es extraer la fila en una variable basada en lo que está en b14 eso es todo eso es para ambos nuevos existente por lo que el resto es simplemente actualizar o agregar a la base de datos vamos a agregar a la base de datos vamos a establecer la hora y fecha de revisión actual en la columna b vamos a establecer el nombre del personal en c proveniente de f9 la revisión si hay un nombre de archivo en h9 que proviene de h9 f10 tomará los nodos en f12, así que básicamente todo lo que voy a hacer es d o es simplemente tomar toda la información del revisor la revisión mirar las notas y el estado y simplemente colocarla directamente en la cuenta la fecha el revisor la revisión archivar el estado de la nota y todo eso, así que eso es todo lo que tenemos que hacer allí para manejar eso, está bien, genial, así que prácticamente lo guardará , eso es todo lo que necesitamos hacer lo último una vez que lo guardemos, quiero ejecutar la macro que actualizará las revisiones correctamente porque si agregamos una nueva revisión quiero actualizar esta lista, tenga en cuenta que hay una, digamos una aquí, esta no tiene una lista completa de reseñas, así que si agrego una reseña aquí, quiero asegurarme de que la agreguemos automáticamente aquí, así que si la probamos aquí y luego lo guardamos, quiero asegurarme de que esa revisión también se actualice aquí, está bien, noten que acabamos de agregar eso aquí, así que queremos asegurarnos de actualizar la lista de revisiones aquí, así que voy a ejecutar la macro que se carga las revisiones esa es la macro que acabamos de subir aquí cargue la revisión para que un Todo lo que quiero hacer es actualizar y agregar los cambios que hicimos aquí y también ejecutar la macro llamada actualización de flujo de trabajo que lo actualizará de esa manera. Cualquier cambio que hayamos hecho quería asegurarme de que parece que la macro es Vamos a actualizar esta lista . Vamos a repasar eso pronto. Lo último es eliminar el documento. Eso es relativamente fácil. B3. Necesitamos asegurarnos de que haya una fila asociada con la que no le haremos saber al usuario si quiere. eliminarlo, sí o no, si lo hacen, vamos a asignar esa fila a la fila de la base de datos documentalmente, vamos a establecer la identificación del documento y luego solo vamos a eliminarlo de la base de datos y luego vamos a actualice el flujo de trabajo y luego vamos a ejecutar una macro a nueva, así que básicamente solo estamos eliminando la fila asociada aquí simplemente tomando cualquier fila eliminando ahora nuevamente si desea agregar más, le sugiero que elimine todas las revisiones asociadas esto al ejecutar un filtro avanzado simplemente no obtuvimos eso porque Ejecutamos mucho ese filtro avanzado clasificándolo en función de las filas, es mucho, es mucho trabajo solo para eliminar la clasificación, pero le diré la forma correcta de hacerlo, clasificándolo en función de la fila más alta primero la más baja fila y luego llevar la fila a una variable eliminar la fila eliminar la fila fila y fila básicamente repasando y eliminando las filas asociadas, así es como lo haría si desea entregarlo para nuestros propósitos, no es necesario hoy, pero eso es lo que es posible que desee si lo está vendiendo, sin duda desea eliminar las revisiones asociadas con cada documento, está bien, continúe, así que ahora lo que quiero hacer es cargar una revisión que es una macro simple cuando selecciono que es una macro simple cuando seleccione en una revisión, quiero cargar eso correctamente si sé que tenemos una fila de base de datos asociada aquí, todo lo que necesito hacer es cargarla, de modo que cuando haga un cambio de selección, quiero que se ejecute la macro cuando haga una cambio de selección basado en cualquier lugar de l4 todo t El camino a través de n12 eso es lo que quería ejecutar, así que echemos un vistazo a que se origina dentro de nuestros flujos de trabajo, funciona fijo y se basa en el cambio de selección cuando realizo un cambio de selección de l4 a n21. Quiero asegurarme de que l contiene un valor. bien, si selecciono algo que no sucedería nada, solo cuando seleccionamos el valor, en ese caso, quiero ejecutar una macro que va a cargar los detalles de revisión aquí dentro, está bien, entonces queremos cargar todo, así que lo que queremos hacer es b17 va a tomar la fila de destino quiero poner lo que necesitamos para el formato condicional b17 recuerda que esa es nuestra fila de revisión seleccionada raíz cuando la seleccionamos observe los cambios de b17 también quiero tomar esa base de datos que voy a poner directamente en b14, así que ese es el siguiente paso b14 tomará lo que sea que esté en r y el objetivo traerá la fila de la base de datos una vez que tengamos que vamos a ejecutar la macro llamada revisión de carga que es la macro que estamos voy a entrar ahora mismo eso está aquí así que w Con los flujos de trabajo, queremos asegurarnos de que b14 contenga un valor. Si está vacío, vamos a salir del sub. Tenemos que tener esa fila de la base de datos , vamos a asignarla a una variable llamada b14. aquí b14 una vez que tengamos eso, todo lo que tenemos que hacer es ingresar a la base de datos de revisión, lo que sea que esté en c, que es el nombre de nuestro personal, lo que sea que esté en d, que es nuestro archivo de revisión, básicamente vamos a ir a lo que sea que esté en c o ver el nombre o el archivo de revisión o las notas o el estado y llevarlo directamente a las celdas individuales. Podríamos haber usado el mapeo de datos para esto también f9 o h9 o en este caso f10 o por supuesto f12 va a tomar toda esa información solo con estos líneas de código, eso es todo, revisar la carga, está bien, todo funciona bien, perfecto, quiero asignar una macro cuando hago clic en un botón, quiero asignar una macro, la mejor manera de hacerlo es que vamos a duplicar esto. selecciono algo todas las formas se eliminan pero hay una mac ro que quiero enviar esa macro que estoy asignando a estas formas se llama básicamente selección de macros, vamos a usar una muestra aquí cuando cree esto, usaremos esta muestra si asigno esta macro antes de investigar las formas individuales si les asigno una macro cuando duplico , lo siento, está fuera de la pantalla llamada asignar macro, es esta selección de documento de macro que he decidido asignar a nuestra forma de muestra, nuestra forma de muestra es simplemente un grupo, esto básicamente es solo este elemento aquí y este elemento aquí esta forma aquí, así que el cuadro de texto aquí en la forma aquí esta esquina doblada si quiero actualizar que quiero cambiarlo, puedo cambiarlo, observe que cambiará automáticamente en los que creamos, así que usted mire ahora el pliegue, así que básicamente nuestra muestra será la ventana acoplable original, así que todo lo que tengo que hacer es asignar una macro a esta forma y esta forma o simplemente al grupo como un todo y es esa macro llamada selección de documento que es la macro entonces cuando selecciono algo bien es t La macro que quiero asignar, entonces, ¿cómo vamos a hacerlo bien? Si echamos un vistazo a este nombre aquí, si miro este nombre, sigamos adelante y actualicemos esto , tomamos, hacemos clic derecho aquí y podemos ver se llama grupo de documentos 12. el nombre que le he dado básicamente voy a decir grupo de documentos y luego este 12 es en realidad nuestra identificación de documento, así que cuando selecciono aquí, aparece 12 aquí y este aquí hay una macro ejecutándose es por eso que no puedes verlo, lo creas o no, y este aquí es básicamente si seleccionemos que es 13 ID de documento correcto 13, está bien, entonces podemos ver eso una vez que la macro termine de ejecutarse y explicaré por qué esa macro se está ejecutando básicamente, la macro está esperando que la arrastremos y sueltemos, así que una vez que termine podremos ver esa identificación aquí aquí documento 13 grupo puede verlo aquí 13. entonces lo que quiero hacer es quiero extraiga este 13 de nuestro nombre de documento quiero extraerlo o lo que quiero hacer es de las formas individuales de este llamado document thm show of a thumbnail thm y este se llama document nam para el nombre del documento ahora el punto es lo que queremos hacer es que queremos asegurarnos de que cada una de estas formas haya básicamente dos formas en este grupo que quiero que hagan seguro de que tienen el mismo número de caracteres document and am y también documentan el mismo número de caracteres porque lo que realmente quiero es que quiero ese número y quiero extraerlo si saco el primer número de caracteres si son ambos lo mismo me va a dejar con la identificación del documento y eso es lo que hacemos dentro de eso y quiero colocar esa identificación directamente en b2, entonces, ¿cómo extraemos eso del nombre? Recuerde que no sabemos si han seleccionado en no sabemos si han seleccionado la miniatura en el texto, así que la mejor manera de hacerlo es simplemente eliminar la misma cantidad de caracteres para que podamos hacerlo con solo una pequeña línea de código aquí llamada reemplazar estamos reemplazando el collar de aplicación collar de aplicación es el nombre de la forma que llamó a la macro no sabemos si es una miniatura no sabemos si es un cuadro de texto así que lo que vamos a hacer es darle la misma cantidad de caracteres así que voy a tomar esos 11 caracteres que son todo el texto y voy a eliminarlos en base a eso, así que vamos a usar la izquierda de 11 colores. Voy a tomar todos los primeros 11 caracteres a la izquierda. Voy a reemplazarlos. sin nada con lo que nos va a dejar eso nos va a dejar con esa identificación de documento va a llamar a esta identificación de documento de extracción del nombre de la forma y de esa manera si es una identificación de un solo carácter como uno o dos o doble como 11 o 12 o incluso si es 115, se extraerá automáticamente porque estamos quitando todo lo demás, está bien, así que tomaré que estoy poniendo eso en una variable, entonces lo que quiero hacer es configurar el documento de movimiento a falso b18 que será útil un poco más tarde , básicamente, vas a llevar b18 a falso, está bien, eso será útil entonces lo que queremos hacer en b19 quiero establecer esa posición izquierda y quiero establecer la posición superior lo que quiero saber es cuando selecciono algo quiero saber la posición izquierda de esa forma y quiero saber el posición superior por qué es tan importante porque si decido que voy a arrastrar y soltar , Excel necesita saber si se ha movido a la derecha y necesito saber si la posición izquierda ha cambiado o si la posición superior ha cambiado necesitamos para saber eso, para que podamos decirle a Excel mientras ejecutamos el ciclo, hey, ha habido un cambio, deberíamos actualizar al líder del equipo o ya sabes o quien sea, deberíamos actualizar eso, eso es lo que hacemos dentro de esto, pero el primero lo que queremos hacer es establecer la posición actual, así que voy a establecer la posición, la posición izquierda inicial establecida en función del grupo de documentos, recuerde que este es el grupo en su conjunto, a la derecha , tenemos nombres individuales, el grupo en su conjunto se llama llamado grupo de documentos y luego cualquiera que sea la identificación, así que si tenemos e extraje esa identificación y luego agregué el grupo de documentos, tenemos el nombre del grupo, el grupo es donde quiero la posición izquierda, quiero establecer esa posición izquierda y b19 nuevamente, es la posición del grupo donde quiero establecer la posición superior ubicada en b20 una vez que sepa la posición izquierda, puedo compararla, así que básicamente cuando movamos esto, se activará automáticamente, ejecutará un bucle y repasaré esa macro muy pronto, ejecutará un bucle, tiene esa posición superior ¿Ha cambiado la posición de la izquierda? Si ha subido, obtenga la derecha de la nueva persona o incluso si no hay un nombre, necesitamos Oye, no hay nada allí . necesitamos saber la diferencia, por lo que configurar la posición izquierda inicial y luego la posición superior nos ayudará a determinar si se ha movido ahora, lo que vamos a hacer es simplemente cargar la macro que se ejecutará. las revisiones que hemos hecho y vamos a cargar el documento loa d esas macros están abiertas, así que cuando lo selecciono, todo lo que tengo que hacer es tomar ese documento, asegurarme de que la identificación del documento esté ubicada en b2 una vez que esté allí , puedo ejecutar la macro para cargarla y también ejecutar la macro para cargar la identificación así que se va a cargar aquí, cargue esa lista de identificaciones aquí, ya sea un pedido de ventas o lo que sea, va a cargar esas revisiones, una macro para cargar las revisiones, una macro para cargar eso, así que todo lo que necesitamos es b2, va a asumir eso y todo lo demás sucederá entonces lo que voy a hacer es seleccionar la cuadrícula del documento básicamente lo que quiero hacer es cuando hago clic aquí quiero que se seleccione esa forma que le da al usuario la capacidad para arrastrarlo y soltarlo muy fácilmente una vez que lo seleccionamos tan fácilmente para hacer eso, todo lo que tenemos que hacer es seleccionar todo el grupo . para ejecutar una macro, voy a ejecutar una macro, se llama flujos de trabajo, verifique si hay movimiento Es el próximo que viene y básicamente solo ejecutará un ciclo y verificará y verificará continuamente durante varios segundos para ver si el usuario lo ha movido o no, si lo ha movido y luego hacer la actualización. Esto es va a ser súper fácil, así que echemos un vistazo aquí dentro de vba , se llamará flujos de trabajo, verifique el movimiento y, básicamente, qué es esta macro, solo vamos a verificar si el usuario ha realizado un cambio en el movimiento. saber cambiar la posición del grupo si lo han hecho vamos a comprobar si es un movimiento preciso correcto si no es correcto si lo han movido a algún lugar loco tenemos que hacerles saber oye, no puedes moverlo allí y luego simplemente actualícelo , pero si lo han movido a una posición correcta, solo tenemos que informar al usuario que está bien y luego moverlo. Todo lo que tengo que hacer es actualizar el supervisor y moverlo a su nueva posición simplemente con actualizar la base de datos y luego continuar y actualizarla para que podamos hacer eso solo un poco de código aquí, en primer lugar, quiero asegurarme de que b2 contiene, tenemos que tener una identificación de documento real, por supuesto, que se encuentra en b2, si está vacía, podemos salir del subdocumento 80 lo va a poner en un variable b2, entonces voy a ejecutar un conteo desde 1 hasta 100 000 y eso nos retrasará, necesitamos darle al usuario algo de tiempo para hacer los cambios correctos si ha seleccionado algo, dales en algún momento, si es demasiado rápido , no tendrán tiempo suficiente, es posible que quieran moverlo, ya sabes, un poco después , así que queremos hacerlo dándoles algo de tiempo para moverlo, así que vamos a comenzar que ahora es durante un macro, por lo que debemos permitirles realizar algunos cambios mientras se ejecuta la macro, por lo que avanzar nos permitirá hacer que le permita al usuario realizar algunos cambios mientras se ejecuta la macro. hecho así es si debería continuar ejecutándose mientras b18 sea falso b 18 es falso continúe ejecutándose y verifique yendo y revisando y revisando tan pronto como hagan un cambio, estableceremos b 18 en verdadero, eso permitirá que Excel diga que está bien, sabemos que se ha realizado una actualización, debemos hacer esos cambios, por lo que b18 nos permitirá saber si se ha realizado un cambio para que el ciclo continúe ejecutándose mientras b18 sea falso , entonces b18 si es cierto, solo vamos a terminar, terminará el aire una vez que se haya movido el documento, haremos eso, ¿de acuerdo? Entonces, ¿cómo? primero que todo, ahora debemos verificar si el documento se ha movido, por lo que nos centraremos en que tenemos la identificación del documento, sabemos que el nombre del grupo es grupo de documentos con identificación del documento y luego qué lo que vamos a hacer es verificar si la posición izquierda es diferente a b19 o la posición superior es diferente a b20 nuevamente, eso es lo que sucedería si la posición izquierda es diferente a b19 o la posición superior es diferente a b20 , entonces sabemos que el usuario ha realizado un cambio, lo siguiente que hacemos es verificar si es una aplicación cambio correcto , es un cambio correcto si está demasiado a la izquierda, debemos informar al usuario, asegúrese de mover el documento a un flujo de trabajo que contenga un nombre de supervisor, está bien, está demasiado lejos y luego, por supuesto, actualice la pantalla entonces podemos hacer eso con esto si la derecha a la izquierda es menor que f1 f llamarán a la en este caso, por supuesto, la fila no importa quiero saber la posición izquierda de la derecha si es si aquí está la f si es antes necesitamos que el usuario note que es antes de que sea menor que la posición izquierda de f, hágale saber al usuario o tal vez si la posición superior es menor a 15. En ese caso, muévalo hacia la derecha, así que hágales saber aquí si la posición izquierda del grupo es la posición inferior a la izquierda de la columna f entonces o en este caso este caso todo lo que necesito saber es la orden de trabajo 14 en este caso vamos a buscar un supervisor adecuado, el supervisor se encuentra en la fila 14. entonces necesito verificar la columna de la forma la columna la celda superior izquierda de esa forma wh en es la columna de eso si eso si esa columna en esa fila es igual a vacío qué significa eso aquí está aquí hay 14 aquí están nuestros supervisores cierto vamos a hacer tiempo libre eso es más fácil cierto si no hay un supervisor aquí en caso de que necesitemos este hágale saber al usuario que no la mueva allí. Necesitamos que un supervisor observe la columna correcta. Si me estoy mudando aquí, esta columna está hasta aquí, eso no va a funcionar. Necesitamos asegurarnos de que la columna lo he movido contiene un supervisor a la derecha, tenemos que usar la celda superior izquierda para eso, por lo que esta es nuestra columna de verificación de la celda superior izquierda más la fila 14, ¿está vacía ? uno o tal vez la posición superior es menor que f15 a la derecha recuerda f la f no importa en este caso si la posición izquierda es la de la fila 15 si está debajo de eso si es menor que eso entonces sabemos que tampoco es bueno como mencionamos antes menos que eso no funcionaría tan bien, por lo que debemos verificar esos tres c Bajo condiciones, si alguno de esos tres es correcto, debemos informar al usuario. Asegúrese de mover el documento a un flujo de trabajo que contenga un nombre de supervisor y luego actualizarlo correctamente. Lo queremos. Queremos ejecutar completamente la macro. Esta macro será a continuación, vamos a ejecutar esa macro que básicamente actualizará a todos a la forma en que estaban tan rápidamente si movieron la incorrecta, simplemente haga clic en Aceptar y volverá a la forma en que estaba bien, pero qué pasa si entonces estamos saliendo del submarino, pero ¿qué pasa si fue un movimiento correcto? Si es un movimiento correcto , entonces lo que quiero hacer es determinar el supervisor ubicado aquí y revisaré ese formulario en un momento. el supervisor ubicado en cualquier columna a la que lo hayan movido y en la fila 14. de modo que el supervisor estará en una variable de cadena que es la fila 14 de flujos de trabajo y la celda superior izquierda la columna de esa forma la columna de esa forma que es el nombre del supervisor nombre del supervisor y todo lo que necesito hacer es tomar ese nombre nombre del supervisor y colóquelo directamente ubicado aquí f9 así que eso es lo que haremos a continuación f9 tomará el nombre del supervisor también quiero establecer el estado en f12 a pendiente establecer el estado dándole un estado así cuando lo muevo a la derecha, quiero establecer ese estado dependiendo de que va a establecer ese estado que está pendiente de revisión . mucho más fácil, se llama revisión pendiente, así que cuando cambiemos esto, cambiará automáticamente, por lo que le dará esa revisión pendiente, así que lo hemos hecho , entonces todo lo que tenemos que hacer nuevamente establece mover a verdadero, a la derecha, esto le permite saber que se ha hecho un cambio estableciendo eso en verdadero qué es lo que va a hacer por qué es tan importante porque tan pronto como se vuelva verdadero saldrá de este ciclo porque tan pronto como b18 pase, terminará, eso significa que ganó no sigas dando vueltas y vueltas y vueltas ng tan pronto como vaya a terminar, lo establecemos en verdadero, luego saldrá de ese ciclo, va a bajar aquí, nos aseguraremos de que b18 sea verdadero y luego todo lo que vamos a hacer. hacer es simplemente guardar eso justo antes de que lo hagamos vamos a guardar esos cambios automáticamente cuando guardemos esos cambios esa nueva posición se establecerá automáticamente esa es la macro por supuesto que vamos a repasar a continuación y esa es la macro que actualiza automáticamente los que se basan en la selección o la carga, tan genial que entendemos cómo moverlo y cómo guardarlo porque tan pronto como lo guardamos correctamente, tan pronto como agregamos esa nueva revisión, tan pronto como agregamos ese nuevo sub, va para cambiar automáticamente muy fácilmente, por lo que no funcionará porque no es lo suficientemente lejos, pero si lo movemos un poco más, funcionará muy bien, así que hemos repasado todas las macros, pero lo que quiero hacer es quiero para compartir con ustedes cómo creamos esto realmente genial para que todas estas formas entren aquí eso se basará en nuestro módulo llamado macros de hoja de flujo de trabajo, por lo que se llama actualización de flujo de trabajo, ese es el que me gustaría repasar con usted ahora, así que lo primero que queremos hacer nuevamente, quiero verificar para asegurarme de que tenemos un carpeta de miniaturas en este caso, aunque aún podemos si no tenemos una carpeta de miniaturas, me gustaría mostrar eso incluso si no tengo una carpeta de miniaturas, digamos que hacemos que esa carpeta sea incorrecta, digamos que solo agregamos algo en eso hace que sea incorrecto, ¿verdad? Todavía me gustaría mostrarlos, pero no tendremos que mostrar miniaturas, seleccione una carpeta en la pantalla de administración, todavía se mostrarán, pero sin avisar al usuario. Oye, pon las miniaturas. pero aún es bueno tenerlos incluso si la ruta del archivo de la carpeta de miniaturas es incorrecta, todavía tendrá las formas y seguirá funcionando , simplemente no tendrá esas miniaturas bien, pero cuando lo hagamos notamos que están allí, simplemente no 't tener las miniaturas tan pronto como hagamos s Seguro que esa ruta es precisa, aparecerán, por lo que queremos advertir al usuario, pero no queremos salir de esto si el director de la carpeta de miniaturas está vacío o si el material de archivo de la miniatura muestra miniaturas de documentos, por favor. configure una pantalla de navegación de carpetas de miniaturas, pero recuerde que no vamos a salir de esto, no es necesario salir de esto, los documentos se pueden mostrar sin las miniaturas, está bien, pero sabe que a veces no tendrá una miniatura para cada uno, así que no lo hacemos. Necesito salir bien, así que antes que nada quiero verificar la fila de flujo seleccionada, ¿qué es eso que se ubicará en b15 ? es una orden de trabajo es una orden de venta b 15 nos dirá que tenemos eso y si está vacío seleccione un tipo de flujo necesitamos saber ese tipo de flujo muy importante porque necesito saber qué tipo de flujos de trabajo escribir cuáles son vamos a buscar tiempo libre van a ser ex los gastos menores a mil van a ser gastos mayores a mil necesito saber cuáles tenemos entonces debemos asegurarnos de que contenga un valor por qué es tan importante porque cuando básicamente uso nuestro filtro avanzado solo quiero flujos de trabajo en función del pedido de ventas, quiero ejecutar un filtro avanzado y se basará solo en un tipo de flujo de trabajo específico, por lo que debemos saber que dentro está bien, así que si no hay nada en b15 , podemos salir del sub derecho, eso es muy, muy importante, continúe bien, vamos a configurar la carretera seleccionada básicamente como una variable dentro de lo que sea b15, esa es nuestra fila de tipo de flujo seleccionado, también quiero borrar los documentos existentes, si lo estoy actualizando, quiero asegúrese de eliminar todos estos ahora tenga en cuenta que todos tienen la palabra documento documentado nuestra muestra no nuestra muestra se llama grupo de documento de muestra grupo de documento no tiene el documento de Word en él, no la palabra completa , así que lo que quiero hacer y quiero asegurarme que ninguna otra forma tiene el documento de Word. Quiero eliminar todas las formas que contienen el documento de Word. Para hacerlo, podemos ejecutar un pequeño bucle. En este caso, llamará a cada forma de documento. Esto se ha definido como dar forma hasta aquí documentar la forma como una forma, por lo que para cada forma de documento en formas, a la derecha, ya estamos en las formas si en la cadena el nombre que contiene la palabra documento es mayor que cero , lo que significa que elimina la forma, así que para cada una de las formas en nuestra hoja de trabajo que contiene el documento de Word eliminado está bien, vamos a recrearlas, así que no hay necesidad de mantenerlas, entonces lo que queremos hacer de nuevo quiero establecer b18 establecer movimiento verdadero para evitar el bucle que quiero hacer Estoy seguro de que no vamos a crear ningún bucle, así que voy a configurar b18 como verdadero por si acaso, ¿por qué sucedería eso? Si hago clic aquí y lo actualizo muy rápido, podría ser un problema si lo decido. para guardarlo muy rápido, no quiero crear un bucle correcto para que la forma en que va a salir de cualquier ciclo que pueda estar surgiendo, por lo que establecer salidas verdaderas para evitar cualquier ciclo, está bien, entonces lo que quiero hacer es borrar las posiciones existentes y los recuentos de documentos, así que b2 f15 f101 a p101 ¿qué hace? eso significa que también quería hacer un seguimiento de cuántos documentos hay aquí, si muevo este documento aquí, no puedo hacer que aparezcan uno encima del otro , necesito saber que hay dos documentos en esta columna o tres documentos en esta columna para que no aparezcan uno encima del otro, permítanme mover eso para que podamos ver o tres documentos , por lo que debemos realizar un seguimiento de cuántos documentos hay en una sola columna, bueno, lo pondré hasta el final . aquí abajo en la fila 101. un aviso es 3. necesito hacer un seguimiento de eso vba va a hacer eso por nosotros pero necesito hacer un seguimiento de cuántos documentos hay en una columna para que podamos saber eso , así que vamos para poner eso dentro de b101 cuando actualice el programa, voy a borrar f por completo, digamos p o s algo así f101 a p101 borrando eso no lo hacemos una vez que lo borramos vba va a hacer un seguimiento de eso, así que f101 a p10 se borra b2 la identificación del documento también f15 a p15 f15 a p15 echemos un vistazo a eso también queremos asegurarnos de que estamos limpiando todo hasta aquí todo el todo hasta aquí f15 hasta el final porque estos tipos también se basan en lo que hayamos seleccionado en el tiempo libre o lo que sea, por lo que son en base a eso, vienen de aquí, las ventas de aquí, así que si cambio a tiempo libre, solo quiero cargar estos cuatro , así que debemos limpiar todo lo que se encuentra en f15 y en todo el derecho, así que vamos a actualizar automáticamente, pero queremos borrar los existentes una vez que los seleccionamos, entonces, por supuesto, nuestros supervisores aparecerán aquí, así que vamos a borrarlos . es b16 está vacío lo que está en b1 6 echemos un vistazo b16 contiene nuestra fila de tipo correcto, debemos asegurarnos de que tenemos una fila de tipo aquí aquí ¿qué es ese aviso? Recuerde que es nuestra fila de tipo aquí los tipos se encuentran aquí tiempo libre uno dos tres estamos vamos a usar cómo llegamos a eso por supuesto vamos a usar solo ese indirecto simple que estamos haciendo coincidir en los tipos de flujo de trabajo en ejecución vamos a usar indirecto d y quiero saber en qué fila está que podríamos usar una coincidencia para eso que también funcionará. Quiero saber en qué fila está, así que tenemos que vamos al tipo b si quiero obtener una columna, así que vamos a comenzar con b16 a la derecha uno dos tres o cuatro, pero lo que realmente quiero no es solo uno, dos, tres, cuatro, quiero saber qué columna es, por ejemplo, el tiempo libre se coloca en 6 porque quiero obtener todas las posiciones del personal aquí, quiero determinar la última fila y quiero recorrerlos todos para determinar eso, así puedo colocarlos directamente aquí dentro y si hago clic en el tiempo quiero colocarlos directamente Bien aquí para hacer eso, necesito esa columna, así que lo primero que queremos hacer si sabemos uno si sabemos que el primero es uno y sabemos las columnas en seis , todo lo que tenemos que hacer es sumar cinco, así que sumar cinco es justo lo que hice aquí d aquí nuestra columna de flujo de trabajo de la empresa columna de flujo de trabajo de la empresa se encuentra en b16 más cinco esa es nuestra empresa de administración de flujo de trabajo administrativo llamemos a esta empresa porque configuramos esos flujos de trabajo de la empresa y luego, una vez que tengamos la columna, quiero determinar el último fila basada en ese derecho la última fila será la última fila posible en este caso será 18 18 digo en este caso mucho 18 todo el camino hacia abajo a la derecha así que obtén la última fila en este caso otra vez ahí está esa palabra 11 bien, pensaré en otra cosa que no sea en este caso en esta instancia me gusta más en esta instancia 11 es nuestra última fila, por lo que queremos ejecutar un ciclo de 8 a 11 tomando todos esos y colocándolos directamente en nuestra fila aquí comenzando en f y luego avanzando bien, entonces podemos hacer eso aquí, así que si el último fue menos de 8, entonces, por supuesto, asegúrese de agregar una empresa, debe haber al menos más de 180 , entonces lo que vamos a hacer es desactivar la actualización de la pantalla de la aplicación, está bien, no necesitamos este aquí que no es importante tiene una mejor manera de evitarlo, así que vamos a ejecutar este ciclo para que la fila de la compañía dure, así que básicamente solo estoy ejecutando un ciclo desde el administrador que comienza con 8 y va a la última fila para cada uno, básicamente vamos a actualizar las filas aquí comenzando, por supuesto, en la columna 6 y la fila 15. Así que las celdas del caso desde nuestro 15 a la derecha son una fila de flujo de la empresa fila 2 menos 2. bueno, ¿qué es eso ? sabemos que está comenzando, sabemos que comenzará en la fila 8, estamos haciendo un bucle, estamos comenzando en la fila 8, pero esta fila 8 debe colocarse en la columna 6 aquí, así que si sé que la fila 8 debe colocarse en la columna 6 todo lo que tengo que hacer es restar 2 y eso es justo lo que he hecho aquí el flujo menos 2 que nos dará 6. entonces fila 15 columna 6 valor eq duales las celdas de administración el valor de la columna de flujo de la compañía de la fila de flujo de la empresa, por lo que básicamente establecerá ejecutar ese ciclo, se colocará directamente cada uno, uno, dos, tres, cuatro desde aquí, independientemente de lo que se establezca, así que aquí vamos. en este caso, hay muchos aquí y , por lo tanto , tenemos muchos de ellos básicamente en esto, por lo que irá independientemente de la columna, está bien, así que simplemente cargará esos flujos de trabajo de la empresa básicamente en eso, así que todo lo que tenemos que hacer es que una vez que tenerlos cargados, podemos continuar, así que eso es todo, eso es básicamente todo lo que vamos a hacer con la sección de flujo de trabajo a continuación, lo que queremos hacer es ejecutar ese filtro avanzado, recuerde que necesitamos ejecutar un filtro avanzado, necesito saber dos cosas una es una orden de venta y dos quiero asegurarme de que no se haya finalizado correctamente, así que quiero asegurarme de que el flujo de trabajo sea una orden de venta y el estado actual no esté finalizado, así que eso lo hará para nuestro actual el estado no es igual y luego final, está ese rango con nombre nuevamente final, así que lo que sea que hayamos colocado aquí llamado final, lo que sea que coloquemos aquí no va a igualar eso, entonces esas dos instancias si esas dos instancias son verdaderas, en este caso es una orden de venta y tampoco quiero que esos resultados aparezcan aquí, podemos hacerlo con un filtro avanzado que el filtro avanzado pasará ahora mismo, así que aquí vamos con la base de datos de documentos aquí estamos comenzando aquí la base de datos de documentos la última fila estamos obteniendo nuestra última fila si la última fila es menos de tres y luego salimos del sub estamos ejecutando nuestro filtro avanzado basado en a3 traigamos esa base de datos aquí comenzando en a3 hasta k3 necesitamos esos encabezados asegurándonos y luego nuestro el criterio es s2 a t3, por lo que nuestros datos originales a3 a k usando la fila de encabezado voy a ejecutar un filtro avanzado, nuestro criterio es s2 a t2, luego también queremos que la copia se ubique en el rango donde vamos a copiar eso a quiero esos resultados para aparecer ad2 todo el camino t a través de a y 2. eso es justo lo que tenemos aquí 82 a través de a y 2. bien, una vez que tengamos esos, necesito determinar la última fila de resultados. Voy a usar la columna de anuncios. Obtendremos la última fila de resultados si esa última fila de resultados es menos de tres, entonces podemos salir del sub, es 11. Entonces podemos hacer que la última fila de resultados basada en el anuncio obtenga que si los últimos resultados fueron menos de tres, salga de esto con los flujos de trabajo ahora vamos a centrarnos en la base de datos que hemos hecho ahora nos vamos a centrar de nuevo en la hoja de flujo de trabajo para obtener resultados iguales a tres hasta el último. Necesito recorrer cada zona tres hasta la última fila que necesitamos. para extraer algo de información, lo primero que quiero hacer es asegurarme de que realmente no tenemos un revisor, ese revisor, en realidad, todo eso tiene que ser, necesitamos tener eso, si no tenemos eso, no lo somos. voy a saber dónde colocarlo bien si estoy aquí no voy a saber dónde colocarlo así que tenemos que saber dónde estamos p atándolo también necesitamos saber la posición tenemos que tener esa posición aquí tienen que tener una posición presidente detente si no hay una posición por supuesto que voy a cambiar eso a am eso debería ser me gusta eso mejor verdad no hay posición del espectador más más importante está bien salgamos de allí y coloquemos aquí la posición está bien así que no hay posición de revisión me gusta más la identificación del documento que vendrá del anuncio aquí es adi quiero esa identificación del documento dentro de una variable que vamos a ponga eso dentro de la identificación del documento el nombre provendrá de ae puede ver que arriba también vamos a saber la posición del mismo cuál es esa posición necesito saber dónde está la posición del revisor se basará en am am esa posición muy importante basada en el nombre, entonces quiero saber el nombre de la miniatura que vendrá de aj aquí está el nombre de la miniatura ese nombre vendrá aquí observe que todos terminan con el pulgar a la derecha tenemos que tener esos nombres de archivo cuando combinamos este pulgar junto con nuestro th carpeta de miniaturas aquí va a ser una ruta de archivo completa, por lo que debemos extraer eso también necesito saber esa ruta de miniaturas recuerde esa carpeta de miniaturas más el nombre de la miniatura será la ruta completa de esa miniatura voy a configurar el rango de posición lo que necesito hacer es encontrar esa posición voy a establecer el rango de posición aquí lo averiguaré bien si sé que digamos que aquí está nuestra posición que viene de am en una variable si sé que esa posición es Fuera del personal ¿Dónde está el personal de la oficina? ¿Qué columna va a ir ? Va a ir aquí en la columna f, pero ¿y si es vicepresidente? Si vicepresidente, necesitamos poner eso en la columna, necesito saber en qué columna estamos al hacerlo, vamos a usar, vamos a crear un rango ubicado desde aquí en f15 hasta el final y vamos a buscar esa posición y encontrar en qué columna se encuentra, podemos hacer eso con esto establecer el rango de posición va a ser igual a f15 hasta p15 vamos a encontrar qué estoy buscando esa posición recuerda esa posición viene de am directamente aquí esa posición viene de am vamos a buscar eso vamos a mirar en los valores en el total si es fin si no ha encontrado si no se encuentra, podemos pasar al documento de nodo. Si no se encuentra , no sé dónde corregirlo, así que no podemos pasar al siguiente. Si la posición no es nada , significa que no se encuentra. vaya al siguiente documento, se omitirá todo e irá directamente aquí abajo, suponiendo que se haya encontrado, podemos continuar en esa columna de posición, se encuentra el rango de posición, el que se encontró en on.com, esa es la columna que tenemos ahora nosotros saber en qué columna colocarlo una vez que tengamos la columna, entonces lo que quiero hacer es determinar la posición izquierda cuál es la posición izquierda de ese pozo, la posición izquierda es básicamente la posición izquierda, podemos usar la fila uno de las celdas fueron en el flujo de trabajo, la posición izquierda de esa columna y quiero agregar o ne, significa que no lo ejecuto directamente en esa columna, lo quiero un píxel hacia la derecha , así que lo moveremos un poco hacia la derecha, un píxel, también quiero establecer la posición superior ahora la parte superior la posición es un poco más técnica porque no sabemos que la posición superior se basará en esto podría ser esto podría ser esto realmente se basa en cuántos hay aquí dentro cuántos documentos están ubicados en el sola columna, necesitamos realizar un seguimiento de cuántos se ubicarán en la fila 101 y cualquiera que sea la columna asociada, por lo que, básicamente, la posición superior se basará en la posición superior actual basada en la fila 16, ¿verdad? Me pregunto si estamos Comenzaremos con la fila 16 en la posición superior, pero vamos a agregar a eso, bueno, no agregaremos nada si esto es 0, no agregaremos nada, se colocará aquí, pero si es 1 básicamente. quiero que sea 1 vez la altura de este veces la altura entonces lo vamos a colocar uno abajo i Si son dos, será dos veces la altura de esto, lo colocaremos en el tercero, así es como lo haremos, de nuevo, la posición superior aquí, bajemos aquí, la posición superior aquí va. para comenzar en 16 más vamos a agregar algo qué estamos agregando vamos a agregar la altura de esto quiero agregar un pequeño espaciador correcto no los quiero uno encima del otro veces cualquiera que sea el valor en 101, ese es el número correcto más dos, así que básicamente vamos a multiplicar esto, así que básicamente si es si ya tenemos uno aquí si es entonces todo lo que tenemos que hacer es sumar una vez la altura que será nuestro la posición superior está bien, así que todo lo que tenemos que hacer es usar el valor aquí y , a medida que agregamos más, todo lo que tenemos que hacer es incrementar esto cada vez que agregamos uno cada vez que agregamos un incremento incrementamos esto en uno así es como manténgalo al tanto, así que le mostraré que a medida que avancemos en el código, está bien, eso establecerá nuestra posición superior en función de En los documentos actuales dentro de la misma columna, lo que quiero hacer es estar listo para crearlo, así que ahora tenemos la primera posición, ahora tenemos el lapislázuli, sabemos todo lo que tenemos que hacer, tenemos el miniatura , entonces lo que voy a hacer es tomar esta muestra aquí, el agarre de muestra y lo voy a duplicar y luego lo que voy a hacer es cambiar el nombre de esta parte esta parte aquí se llama miniatura del documento de muestra, voy a cambiarle el nombre y voy a cambiar el nombre de este documento de muestra dándole nuevos nombres, la macro ya se ha asignado, así que no necesitamos crearla, no necesitamos asignar otra macro así que hacemos eso aquí da forma a sample.group vamos a duplicarlo vamos a asignarle un nombre único recuerda ese nombre grupo de documentos y la identificación del documento ese es el nombre único que ya hemos definido la identificación del documento aquí está bien, así que una vez que tengamos eso, podemos centrarnos en eso con datos de recorte de documentos de formas, así que quiero configurar la miniatura ahora, lo que queremos hacer eso t humbnail no vamos a configurar para todo el grupo, solo vamos a configurar esa miniatura en función de uno de los elementos que contiene, entonces, ¿qué es esta forma aquí llamada miniatura del documento de muestra? Eso es lo que realmente quiero, así que quiero hacer dos cosas, una, quiero tomar eso y quiero llenarlo con una imagen, ¿cómo lo hacemos bien, básicamente, todo lo que tengo que hacer es seleccionar aquí ? archivo, así que lo llenaríamos con una imagen, eso es todo lo que haría allí si lo estuviera haciendo manualmente, lo que estamos haciendo es un vba, así que básicamente eso es todo lo que estamos haciendo, simplemente llenándolo con una imagen, pero lo estamos haciendo con esta forma particular en el interior se llama sample doc thumb, así que dentro de vba vamos a resaltar que con elementos de grupo sample dock thumb lo primero que quiero hacer es cambiar el nombre de esa forma, voy a cambiarle el nombre a document thm document thumb recuerda esos 11 caracteres muy importantes y la identificación del documento porque necesitamos recordar Ove esos 11 caracteres, entonces queremos extraer la identificación del documento, está bien, una vez que tengamos eso, lo que quiero hacer es asegurarme de que el documento, la ruta de la miniatura, sea precisa si es el documento, el directorio de la ruta de la miniatura, el directorio vb lo hace. no igual vacío eso significa que es bueno es un buen camino entonces lo que voy a hacer es agregar relleno correcto ya estamos dentro de esto con la muestra con este elemento llenando esa forma particular con la imagen del usuario basado en esa miniatura, esto básicamente agrega una imagen en miniatura como fondo tan perfecto así es como lo tenemos eso es todo eso es todo para la miniatura ahora lo que quiero hacer es quiero tengo una cosa más que hacer quiero tomar este cuadro de texto aquí muestra el texto del nombre del documento y quiero agregar el nombre del documento, así que básicamente, sea cual sea el nombre que extrajimos aquí de ae, quiero ponerlo en el cuadro de texto para que podamos hacerlo con solo un poco de código de lima, así que muestra el documento nombre del doc otra vez quiero asignarle un nombre dándole ese nombre único nuevamente, otros 11 caracteres aquí y luego dándole la identificación del documento, le asignaremos un texto, ese texto se basará en el nombre del documento, ese nombre del documento que ya hemos definido aquí basado en ae aquí dándole ese nombre de texto marco de texto 2 texto de rango de texto es igual a nombre de documento establece el nombre del documento de esa manera cada uno tiene un nombre de documento individual y nuevamente con esta forma particular, observe que es un poco transparente si miramos en el derecho de inicio y el formato en realidad podemos hacer el relleno de la forma y luego tenemos más colores. Le he dado un aviso transparente, es 27 transparente, así que eso es todo, si quisiéramos que sea sólido, podríamos hacerlo aquí y luego, todo lo que tenemos que hacer es el sólido y sería sólido, así que si quisiéramos hacer un poco transparente o tal vez quisiéramos cambiar el color si quisiéramos si lo hiciéramos con solo esto, es muy, muy fácil, podemos hacer cambios fácilmente todo lo que necesitamos hacer es solo cambiar eso, vamos digamos que lo quería oscuro y tal vez quería el texto en este caso blanco, podría hacerlo bien, será muy fácil, seleccionemos todo el texto, el texto completo aquí y la forma completa, haga que sea blanco, así que ahora cuando ejecutemos las ventas ordenar que se active automáticamente para que pueda actualizar muy, muy rápida y fácilmente. Me gusta un poco mejor, tal vez está bien, devuélvalo a la forma en que estaba bien, así le da una buena apariencia, así que todo lo que tenemos que hacer es simplemente cambie la muestra y todo cambia debajo de eso, así que le asignamos ese nombre ahora lo que queremos hacer es establecer la posición del grupo, el resto es fácil, ya hemos definido la posición izquierda, así que podemos establecer la posición izquierda izquierda de la posición izquierda del grupo completo, por lo que estamos fuera de aquí, estamos dentro y fuera del nombre del documento aquí, estamos dentro y fuera de la miniatura, pero aún estamos dentro del grupo como un todo, por lo que podemos configurar la izquierda posición y podemos establecer la posición superior establecer la posición superior y también quiero establecer el ancho el ancho es bastante fácil porque de esa manera, si cambiamos el ancho de la columna, también podemos cambiar esto aquí, por lo que el ancho de esa forma se basará en la columna en la que la coloquemos, por lo que la columna de posición -4 por lo que un poco menos que el ancho un poco menos que el ancho de la columna de esa manera hay algo de espacio que simplemente establecemos de esa manera si aumentamos la columna a la derecha, entonces simplemente amañamos, notará automáticamente que aumentó automáticamente, así que me gusta más porque aumenta con la columna, por lo que es un poco más fácil y puede que no tenga que cambiar mucho, simplemente aumenta automáticamente, de esa manera establecemos el ancho de la columna, está bien, genial, así que lo último que queremos hacer es quiero incrementar esa celda, recuerde que tengo que actualizar una vez que la hayamos colocado en una columna, necesito actualizar lo que sea que esté aquí, quiero incrementarlo uno más, así que lo hacemos con solo esa línea única de celdas de código 101, sea cual sea la columna en la que estemos trabajando es igual a lo que sea actualmente t aquí más uno , recuerde que cuando actualizamos toda esta macro, la borramos, así que mientras trabajamos en todos los documentos particulares, incrementamos las celdas para que actualice automáticamente esa posición superior aquí a medida que agregamos más, así que observe aquí esto se actualizó a cero a la derecha, así que tenga en cuenta que no está aquí, así que si cambio esto a la derecha y lo traigo aquí a uno, automáticamente cambiará a uno cuando lo arrastre y suelte sobre la macro, se ejecuta esta actualización a uno, así que tenemos que obtiene un buen seguimiento muy, muy fácilmente, todo lo que tenemos que hacer es simplemente actualizarlo, así que el siguiente resultado y luego lo último es la actualización de la aplicación, así es como creamos automáticamente estas cosas muy interesantes, está bien, así que ahora tenemos tengo algunos más para mostrarte, es posible que deseemos enviar algo al siguiente, podemos arrastrar y soltar, pero también quería darle otra opción, ¿y si solo queremos hacer clic una vez y digamos, oh, necesitamos seleccionar, digamos yo? quiero seleccionar algo y quiero moverlo podemos hacer eso con un solo botón con solo unas pocas líneas de código y lo hemos hecho aquí llamado enviar a la revisión anterior o, en este caso, enviar a la siguiente, volvamos a traer esto aquí para que tengamos enviar al envío anterior para luego aprobar y luego, tal vez solo quiera hacer un clic donde pueda aprobarlo a continuación, así que si quiero hacer clic aquí y quiero probarlo, boom, aprobado, un botón lo hará, entonces, ¿cómo vamos a hacerlo? bueno, todo lo que tengo que hacer es determinar si hay un supervisor en la siguiente columna, asegurándome de que, obviamente, si estamos en la última columna , no podemos hacerlo aquí, debemos informarles que hay un problema, asegúrese de mover esto documento a la posición que contiene el nombre de un supervisor porque no hay un siguiente aquí, así que todo lo que podemos querer hacer es devolverlo a la persona original, así que tal vez estemos aquí y tal vez Tim diga oh, realmente lo estropeamos, ¿sabes? tienes que volver, quiero devolverlo a hank aquí, así que solo hago clic en el tanque atrás y eso va para devolverlo automáticamente a la columna de Hank aquí con solo una que vuelve al original, por lo que esas son las pocas macros que le mostraremos, todas son muy similares, por lo que el documento aprobó los próximos flujos de trabajo, por supuesto, debemos asegurarnos hay una identificación de documento si b2 está vacío, no hay nada que podamos hacer, así que siga adelante , suponiendo que tenemos un documento, lo pondremos dentro de una variable aquí, vamos a establecer que la forma del documento será igual a documento entonces estamos configurando esa forma aquí ahora la forma del documento si no es nada correcto entonces simplemente no podemos mover algo si en realidad no tenemos una forma así que solo estamos comprobando para asegurarnos de que realmente tenemos una forma entonces lo que quiero hacer es determinar cuál es la posición actual de esa celda, qué columna, cuál es la columna actual de este derecho, necesito saber si es hola, necesito verificar la columna al lado para asegurarme de que tiene un supervisor, por lo que debemos convertir eso en una variable que va a basarse en esa forma la celda superior izquierda la columna cuál es la columna de la forma actual entonces lo que quiero hacer es verificar la columna al lado así que la columna más uno si está vacía eso significa que no hay supervisor así que nosotros debo decir, asegúrese de mover este documento a una posición en la que vio ese mensaje que contiene un nombre de supervisor de esa manera no podemos moverlo a otra persona, está bien, pero asumiendo que hay un documento, todo lo que tengo que hacer es cambiar la actualización entonces, lo que voy a hacer es configurar esto como pendiente de revisión o pendiente. Recuerde que en este caso vamos a usar pendiente pendiente aquí. Ese es el rango con nombre aquí . voy a configurar esto en nuestro revisor actual pendiente, así que si tomo esto y lo muevo sobre uno, automáticamente configuraré tim sobre el próximo y será un centavo y luego simplemente actualizaré el cronograma una vez lo he cambiado aquí y lo guardo bien, eso se hace a través de vb una configuración esta configuración esto lo guarda y luego lo actualiza automáticamente va a aparecer aquí eso es lo que hacemos en la siguiente línea de código f12 va a estar pendiente f9 por supuesto ese es el nombre del revisor va a venir de la fila fila 14 la posición columna más una que va a establecer el nombre del revisor, entonces lo que voy a hacer es borrar las notas y las revisiones h9 quiero borrar cualquier cosa h9n borrar todo lo demás solo para asegurarme porque es una revisión completamente nueva, así que quiero borrar aquí y quiero borrar aquí para que podamos hacer eso aquí y luego lo que quiero hacer es simplemente ejecutar guardar y actualizar el documento una vez que se guarde, se actualizará automáticamente, todo bien, la revisión anterior es exactamente igual, excepto que solo nosotros vamos a verificar la columna anterior a la derecha, así que si queremos moverla de regreso al supervisor anterior, podemos hacer exactamente eso con aquí nuevamente, vamos a ejecutar todas las mismas verificaciones aquí, esta vez vamos a verificar la columna de posición, estoy determinando la columna que quiero para verificar la columna antes de eso, si está vacía, queremos asegurarnos de mover este documento a la columna anterior, está bien, también debo poner aquí o a la derecha o quiero verificar también, asegurándome de que también esté tranquilo, qué columna es que queremos asegurarnos de que si esto se llama, hagamos la columna igual a la derecha, sabemos que esta es la columna o si son las columnas, la columna 6, entonces sabemos que la columna 6 no pueden moverla de nuevo, así que agreguemos a eso o hagámoslo aquí arriba en la instrucción if aquí si o la columna de posición es igual a 6 a la derecha eso sería todo o menos que correcto, de esa manera si intentan moverlo incluso a la izquierda a la derecha si hacen clic aquí y trata de hacer eso, también queremos que llegue ese mensaje, no pueden moverlo hacia la izquierda si están en el primer pentagrama, está bien, entonces la columna de posición uno está vacía a la derecha, así que ahora nuevamente haremos lo mismo esta vez. voy a poner necesita revisión voy a asignar a esto un estado diferente llamado necesita revisión ese aquí yo se llamará necesita o necesita revisión o necesita revisión aquí, así que eso es lo que haremos aquí ahora que tiene una macro ejecutándose, por eso no apareció, necesita revisión aquí, esa es la que quiere o necesita una revisión aquí para que podamos devolverlo y luego, por supuesto, el nombre del revisor será el supervisor anterior en la columna anterior también en la fila 14 menos uno que es el nombre del revisor nuevamente, vamos a borrar las notas y revisión, lo guardaremos tal como está y eso lo rehará automáticamente perfecto, está bien, pero ¿qué pasa con el original? ¿Qué hay de enviarlo de vuelta a la persona original? Quiero enviarlo de vuelta si dice hank quiero enviar esto de vuelta a Hank, ¿cómo lo hago bien? Básicamente, todo lo que tengo que hacer es tomar lo que sea que esté en h tres y colocarlo directamente dentro y tal vez agregar algo como rechazado. aquí tenemos uno llamado rechazado , así que tal vez tengamos uno aquí llamado rechazado. puedo hacer eso allí, entonces, ¿cómo vamos a hacer eso? bueno, tratamos con solo un poco de código nuevamente, todo es igual, pero en este caso, f9 será igual a h3 establecido en la revisión actual, recuerde que f9 se enfrentará al creador ubicado en h3 y también quiero asegurarme de que hemos tomado el aviso de rechazo tenemos un rango de nombres llamado rechazado aquí quiero colocar eso directamente dentro de f12 así que hacemos eso aquí f12 es igual a rechazado y luego lo borramos y guardamos las actualizaciones así que eso es todo lo que tenemos que hacer para enviarlo de regreso a quien queramos, podemos navegar fácilmente, podemos usar dos formas, podemos usar arrastrar y soltar y también podemos usar, piense, solo los botones aquí para automatizarlo, de manera relativamente simple, este agrega automáticamente un estado específico que es realmente útil, por lo que tenemos un estado específico, así que si seleccionamos uno, sabemos que vamos a tener un estado específico, está bien, hemos repasado todo, pero cómo obtener estas cosas y básicamente lo que quiero hacer con esto es quiero comprobar aquí cuál es el supervisor que quiero t para buscar al supervisor de esto o quiero verificar primero que nada si b8 es igual a bf15 esta fórmula aquí quiero saber qué significa eso b8 b8 busquemos en b8 nuevamente recuerde que teníamos ese personal original si el personal de la oficina está aquí sabemos que esto lo establece vba, pero si el puesto de hank evans es el personal de la oficina y se lo ofrecieron, entonces quiero poner su nombre aquí, pero ¿y si no es así? quiero poner a su supervisor, básicamente quiero poner su supervisor entonces lo que voy a hacer en ese caso es indexar el puesto del personal voy a hacer una verificación si su supervisor es el supervisor un líder de equipo si el supervisor es un líder de equipo vamos a Póngalo aquí para que sea una fórmula un poco compleja, pero quiero simplificarlo para usted y básicamente decir que estamos buscando un líder de equipo específico aquí. Quiero buscar quién es el líder del equipo de Hank Evans si es craig. ponga a craig aquí para saber quién es el líder del equipo, así que una vez que tengamos un valor aquí, quiero buscarlo y ponerlo en el re, así que es un reflejo de que no voy a repasar toda esta fórmula, hemos hablado mucho en esto, ya es un video extra largo, pero quiero que estudies esta fórmula un poco, está bien y básicamente estamos buscando el personal antes y viendo es quién es el líder del equipo del gerente de software si es el gerente de oficina correcto ellos tienen la posición correcta simplemente vamos a colocar el nombre de ese personal directamente allí eso es todo eso es todo lo que vamos a hacer y solo vamos a ejecutar dos controles porque tal vez vamos a omitir uno bien si nos saltamos uno, digamos que no vamos en el orden exacto tal vez queremos omitir, así que hay dos controles , uno que vamos a verificar para el líder actual y lo que vamos a verificar para el personal después, así que básicamente hay dos controles, está bien, muy bien, fue un entrenamiento realmente increíble en este entrenamiento, les mostré cómo pueden crear este arrastre realmente genial y soltar el administrador de flujo de trabajo de documentos completo con las últimas revisiones que tenemos tiene guardar y actualizar y mapeo de documentos y datos también hemos agregado la capacidad de crear miniaturas dinámicamente basadas en documentos de Word o imágenes en pdf y cómo también moverlas, rastrearlas e incrustarlas dentro de formas que también son dinámicas un increíble flujo de trabajo de documentos gerente aprecio esto si te gustan estos entrenamientos quieres ayudar a apoyarnos patreon es una excelente manera de hacerlo tengo un montón de cosas saliendo de patreon y estoy agregando más tenemos descuentos y madrugadores tú tengo libros de códigos en pdf tengo un montón de funciones geniales allí, así que espero que nos visites en patreon, regístrate allí, muchas cosas geniales que estoy poniendo en eso, está bien, ese enlace estará abajo, muchas gracias por visitarnos nosotros esta semana aprecio su tiempo y su esfuerzo que está dedicando a aprender y educarse a sí mismo le garantizo que valdrá la pena nos vemos la próxima semana para otro entrenamiento increíble muchas gracias

Noticias relacionadas