Problemas de incremento de numero de documento al guardar libro de excel

Hola;
La solución que me diste fue perfecta, lo que ocurre ahora es que al abrir el libro guardado, para consultar o completar el formulario, vuelve a incrementar el numero de documento y al cerrarlo vuelve a guardar como otro documento.
Existe alguna forma de que una vez guardado se inabiliten estas dos funciones, ¿guardar cómo y incrementar "numfa0"?
Saludos.
Hola;
Esto me funciona, pero ocurre que en el documento original no incrementa el numero de factura automáticamente y cada vez que lo inicio me genera el mismo numero. Pero si después de abrirlo, manualmente presiono guardar, entonces si que guarda en el documento original el numero nuevo.
¿Cómo puedo hacer este procedimiento automático?
Private Sub Workbook_Open()
Call numfac0
Sub numfac0()
ActiveSheet.Unprotect "*********"
x = Hoja2.Range("D9")
Range("D9").Value = (x + 1)
ActiveSheet.Protect "*********"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call guardarComo
Sub guardarComo()
ruta = "C:\Documents and settings\Jan Tes\Escritorio\Avis\Avis"
ruta = ruta & ActiveSheet.Cells(9, 4).Value
ActiveWorkbook.SaveAs Filename:=ruta
End Sub

1 respuesta

Respuesta
1
Para evitar eso la seguridad de las macros las debes poner en Media, y cuando vayas a abrir el Libro para consulta o para modificarlo, te pedirá que si quieres habilitar las macros, le dices que NO y no se ejecutará la macro, cuando termines de hacer tus correcciones o de consultarlo al cerrar guarda los cambios. La macro seguirá estando pero no hará nada.
>Un saludo
>Julio
Pero esto me ocurrirá también cuando edite el libro nuevo y esto no es lo que necesito. Lo que quiero es que cuando ejecute "guardar como", guarde el documento sin los macros o que estos no se ejecuten nunca. Si no es posible entonces quizá debería imprimir un pdf en lugar de ejecutar un "guardar como", pero tampoco se como imprimir un pdf automáticamente al salir.
Saludos
Vamos a ver, estas mezclando 2 cosas, primero me decías que querías una macro que al cerrar el libro incrementase en 1 el valor de una celda y que se guardase en un directorio. Vale esto echo. Después me dices que quieres cambiar el nombre del libro por otro diferente, vale te he dado la forma. Pero ahora me dices que cuando abres el libro que has guardado no tenga las macros, eso es imposible si estas guardando un libro con macros por narices tiene que tener las macros. Tú, y eso no lo has dicho quieres 2 libros diferentes, uno el que tú abres y creas con macros y otro que es el que abrirán los demás y que solo quieres que tenga la plantilla, pero al mismo tiempo quieres que cuando guarden el libro se incremente en 1 el valor de una celda tendrá que tener macros no queda otra salvo que ellos lo pongan a mano.
Aclarame tu decisión y como la organizamos.
>Un saludo
>Julio
Efectivamente, tienes razón, lo que necesito son dos libros diferentes, uno para crear el informe y guardarlo y otro para solo consultar. Claro, lo que ocurre ahora es que cuando se abre el libro gardado para consultar también se abren las macros y modifican el numero de documento y al cerrar vuelven a guardar como.
Saludos;
Vale ya te has aclarado, y ahora que hacemos, te he planteado que cuando abras el libro en modo consulta que no habilites las macros, así podrás hacer lo que quieras lo guardas y listo. Y cuando lo abran los demás estarán las macros habilitadas y se ejecutaran. Si esto tampoco te sirve dime que quieres hacer ya estoy echo un lio.
>Un saludo
>Julio
<col style="width: 60pt;" span="5" width="80"></col>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt; mso-ignore: colspan; width: 180pt;" colspan="3" width="240" height="20">Veamos si encontrammos el camino, tengo esto y hace la función que necesito correctamente. Que es la siguiente; Tengo un libro con un formulario. Al abrir, genera un nuevo numero incrementando en uno el valor de una celda. Además, coloca automaticamente la fecha con el dia actual. Después de rellenar el formulario cierro el documento y al cerrar se guarda en una carpeta con un nombre que es el numero que se ha dado a este documento seguido del nombre de este libro.
PROBLEMA.: Al abrir el documento generado para consultar, automáticamente se activan las macros y genera otro nuevo numero y al salir lo guarda con otro nuevo numero creando un nuevo documento que es una repetición de este..
Lo que yo quiero.: Al abrir el documento para consultar, solo consulto o modifico y se guarda automáticamente al salir, o bien lo guardo manualmente al salir.
Private Sub Workbook_Open()
</td>
<td style="width: 60pt;" width="80"> </td>
<td style="width: 60pt;" width="80"> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">Call numfac0</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">Sub
numfac0()</td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="3" height="20">ActiveSheet.Unprotect
"******"</td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">x
= Hoja2.Range("D9")</td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="3" height="20">Range("D9").Value
= (x + 1)</td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="3" height="20">ActiveSheet.Protect
"*******"</td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">ActiveWorkbook.Save</td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="3" height="20">Application.DisplayAlerts
= False</td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt;" height="20">End Sub</td>
<td class="xl63"> </td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt;" height="20">Call guardar</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">Sub
guardar()</td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">ActiveWorkbook.SaveAs</td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="3" height="20">ActiveSheet.Protect
"********"</td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt;" height="20">End Sub</td>
<td class="xl63"> </td>
<td class="xl63"> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt; mso-ignore: colspan;" colspan="5" height="20">Private Sub
Workbook_BeforeClose(Cancel As Boolean)</td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">Call
guardarComo</td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="2" height="20">Sub
guardarComo()</td>
<td class="xl63"> </td>
<td class="xl63"> </td>
<td class="xl63"> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="5" height="20">ruta
= "C:\Documents and settings\Jmes\Escritorio\Avis\Avis"</td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="4" height="20">ruta
= ruta & ActiveSheet.Cells(9, 4).Value</td>
<td class="xl63"> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td class="xl63" style="height: 15.0pt; mso-ignore: colspan;" colspan="4" height="20">ActiveWorkbook.SaveAs
Filename:=ruta</td>
<td class="xl63"> </td>
</tr>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15.0pt;" height="20">End Sub</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
Se grabó mal el mensaje, y solo pude leer lo de arriba, ya te lo he explicado si al abrir el libro en modo consulta no quieres que se ejecuten las macros contesta que no quieres habilitarlas (pon la seguridad de macros en Media Herramientas>Macro>Seguridad).
Así te preguntará si quieres habilitar las macros, si vas a abrir el libro en modo consulta no las habilites, no se ejecutará nada, haces tus modificaciones y luego lo guardas a mano.
Espero que ahora me entiendas.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas