entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Unhide masivo en hoja excel

Buenas tardes amigos, tengo un código que coge todos los archivos en una carpeta y los convierte a pdf usando bullzip, el problema que nos hemos encontrado es que las hojas excel que tienen columnas "escondidas" (Hidden) pues no se muestran en el pdf (obviamente).

El tema es que las necesidades son que esas columnas "Hidden" se les haga "unhide" y se muestren también en el pdf. Nuestro código para imprimir como pdf todos los archivos dentro de la carpeta concreta es el siguiente:

on error resume next

Dim printername
Dim output, statusfile, fso, currentdir, documentfile, util, settings, objShell

set util = CreateObject("Bullzip.PdfUtil")
set settings = CreateObject("Bullzip.PdfSettings")
Set fso = CreateObject("Scripting.FileSystemObject")
currentdir = fso.GetAbsolutePathName(".")
printername = util.DefaultPrinterName

Rem -- Print all the files in the 'in' folder
Set fldr = fso.GetFolder(currentdir & "\carpeta1")
cnt = 0
For Each f In fldr.files

output = currentdir & "\convertidos_a_pdf\" & f.name & ".pdf"
documentfile = currentdir & "\carpeta1\" & f.name
'set objShell = CreateObject("WScript.Shell")
'objShell.run documentfile
'set objShell = nothing

Rem -- Change the value of printer name if you want to use another PDF printer
printername = util.DefaultPrinterName

settings.PrinterName = printername
settings.SetValue "Output", output
'settings.SetValue "WatermarkText", Now
'settings.SetValue "WatermarkColor", "#FF9900"
settings.SetValue "ShowSettings", "never"
settings.SetValue "ShowPDF", "no"
settings.SetValue "ShowProgress", "no"
settings.SetValue "ShowProgressFinished", "no"
settings.SetValue "ConfirmOverwrite", "no"

Rem -- Write settings to the runonce.ini.
settings.WriteSettings True

Rem -- Remove old output
rem -- if fso.FileExists(output) then fso.DeleteFile(output)

if documentfile <> currentdir & "\carpeta1\Thumbs.db" then

if fso.GetExtensionName(documentfile) <> "msg" then

    util.PrintFile documentfile, printername
    wscript.sleep 10000

end if

end if

next

wscript.sleep 2000

fso.MoveFile currentdir & "\carpeta1\*", currentdir & "\conversion_hecha"

Se podría de alguna forma añadir a ese script algún código que hiciera "unhide" en toda la hoja excel? De esa manera se mostrarían todas las columnas incluso las marcadas como "ocultas".

SaludoS!

1 Respuesta

2votos

carlossevi Puntos63580

Aquí tienes un pedazo de VBScript que te serviría para abrir el libro de Excel, hacer visibles las hojas y volverlo a guardar:

Set xlApp = CreateObject("Excel.Application") 
Set xlBook = xlApp.Workbooks.Open(documentfile) 
For Each xlSheet In xlBook.Sheets
    xlSheet.Visible = True
Next
xlBook.Save
xlBook.Close (False)

Espero que te sirva.

0voto

ankeorum comentado

Muchísimas gracias genio! Dentro de mi código, para aplicar eso tendría que comprobar si el archivo es excel. Sabrías como hacerlo?

Porque obviamente si intento hacer eso con un word (que también los encontramos en carpeta1) va a petar el script.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta