Retroceder   Foro Ayuda Excel > Dudas y consultas sobre Excel > Macros y programación VBA
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
LinkBack Herramientas Desplegado
  #1  
Antiguo 25/06/08, 05:13:32
Principiante
 
Usuario desde: jun 2008
Versión de Excel: Excel 2007
Conectado desde: Chile
Mensajes: 10
Predeterminado Ayuda con macro...

Hola a todos...tengo una duda con una macro y me gustaria que me pudieran ayudar, les cuento...tengo un libro en excel 2003 generado a traves de un software, este libro puede estar dividido en 10 hojas como en 100 dependiendo de la cantidad de dias que el usuario quiera visualizar, el nombre de las hojas tienen el siguiente formato, ejemplo: martes, 24 de junio de 2008, cada hoja tiene una serie de datos con los que hay que trabajar, sacar la diferencia de un dia con el otro, el promedio y otras acciones, lo que he echo hasta el momento es contar la cantidad de hojas existentes, crear una nueva hoja y listar los nombres de las hoja con un hipervinculo a su hoja correspondiente, todo esto esta en la hoja nueva...pero lo malo es que no me vincula ya que el nombre de la hoja tiene espacios entre cada palabra y son muchas hojas como para editar los nombres uno por uno antes de ejecutar la macro, despues de esto debo mostrar los resultados de las operaciones en la hoja nueva al lado de su vinculo...aqui les dejo el codigo:

Option Explicit
Sub crear_libro()
Dim vbynSep
Dim numero_de_hojas
Dim startPos As Long
'Pasamos el dato a una variable
numero_de_hojas = Sheets.Count
' Mostramos un mensaje en pantalla
MsgBox "Este libro contiene " & numero_de_hojas & " hoja(s)."
vbynSep = MsgBox(prompt:="Desea crear una NUEVA HOJA para el calculo de lecturas?", Buttons:=vbYesNo)
If vbynSep = vbYes Then
Worksheets.Add
On Error Resume Next
With ActiveSheet
.Move Before:=Sheets(1)
.Name = "Calculo"
With Range("B1")
.Value = "Calculo Lecturas"
.Font.Size = 12
.Font.Bold = True
.Font.Underline = xlUnderlineStyleSingle
End With
End With
On Error GoTo 0
startPos = 2
Else
startPos = 0
End If
Call insertar_indice(ByVal startPos)

End Sub
Sub insertar_indice(ByVal startPos)

Dim wksHoja As Worksheet
Dim nrFila As Long

nrFila = startPos
For Each wksHoja In Worksheets
If wksHoja.Name <> ActiveSheet.Name Then
nrFila = nrFila + 1
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(nrFila, 1), Address:="", _
SubAddress:=wksHoja.Name & "!A2", TextToDisplay:=wksHoja.Name
End If
Next
Columns("A:A").EntireColumn.AutoFit
Columns("B:B").EntireColumn.AutoFit

End Sub
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #2  
Antiguo 25/06/08, 05:30:37
Moderator
 
Usuario desde: jun 2008
Versión de Excel: Excel 2003
Conectado desde: Colombia
Mensajes: 61
Contactar con Efasor a través de MSN
Predeterminado Nombre de las hojas

Si el problema es el nombre de las hojas, haz una macro que cambie el nombre de cada hoja a tu acomodo por ejemplo remplazando los espacios por _ y si son muy largos te inventas un formato de nombre adecuado pej:

si el nombre es:

martes, 16 de enero de 2009 podria poner:

M160109, ¿cómo?, pues creas una funcion que trabaje con cadenas,

las funciones ( de VBA) claves son:


instr y mid.

un saludo y mucha suerte cualquier duda tratare de resolverla.

Prueba esto, tienes que modificarlo...


Sub cambioN()

Dim WS As Worksheet
Dim OldName As String
For Each WS In ThisWorkbook.Worksheets

On Error Resume Next

OldName = WS.Name

OldName = OldName





WS.Name = CambiaNombre(OldName)


If Err Then

MsgBox Err.Description
Err.Clear
End If


Next WS

End Sub

Function CambiaNombre(namestr As String) As String


CambiaNombre = Replace(namestr, "Sheet", "Hoja_")


End Function

Última edición por Efasor fecha: 25/06/08 a las 05:52:43.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #3  
Antiguo 25/06/08, 05:30:55
Principiante
 
Usuario desde: jun 2008
Versión de Excel: Excel 2007
Conectado desde: Chile
Mensajes: 10
Predeterminado

Aqui adjunte un ejemplo de la peticion anterior....
Archivos Adjuntos
Tipo de Archivo: zip Libro4.zip (30,0 KB, 27 visitas)
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #4  
Antiguo 26/06/08, 04:53:11
Principiante
 
Usuario desde: jun 2008
Versión de Excel: Excel 2007
Conectado desde: Chile
Mensajes: 10
Predeterminado

disculpa, me podrias esplicar mejor, nose si ando medio lento pero no comprendo bien, donde tendria que ir este codigo???, mejor dicho, como lo hago???
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #5  
Antiguo 26/06/08, 05:14:37
Moderator
 
Usuario desde: jun 2008
Versión de Excel: Excel 2003
Conectado desde: Colombia
Mensajes: 61
Contactar con Efasor a través de MSN
Predeterminado En cualquier modulo...

Cita:
Empezado por tomuer01 Ver Mensaje
disculpa, me podrias esplicar mejor, nose si ando medio lento pero no comprendo bien, donde tendria que ir este codigo???, mejor dicho, como lo hago???
Simplemente coloca el codigo en cualquier modulo y si quieres lo amarras a un boton para que lo ejecute.

Te aclaro que lo que hace es cambiar el nombre de las Hojas, asi que lo debes ejecutar antes del tuyo o por ejemplo en tú macro puedes porner

Código:
call CambioN()
lo que ejecutará el cambio de nombre como parte del macro principal.

Debes modificar la forma en que quedan los nombres ya que este es solo un ejemplo
Código:
CambiaNombre(cadena)
para que te devuelva un nombre adecuado.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #6  
Antiguo 01/10/08, 20:45:57
Principiante
 
Usuario desde: oct 2008
Versión de Excel: Excel 2003
Conectado desde: México
Mensajes: 3
Question combobbox

hola necesito ayuda!!!!!! tengo dos combobox en uno necesito cargar las areas que se encuentran en mi hoja 1, y empiezan en D3 y necesito que me desplieguen esas el problema es que se repiten muchas veces y necesito ke solo paraescan una sola vez cada una y cuando seleccione una de esas areas me mande todos los usuarios que estan en esa area y eso me lo tiene que desplegar en el otro combo
seria asi ams o menos

combobox5

"FIN
"HRS"
"IND"
"MGT"
"MIS"
"PJT"
"PUR"
"QUA"
"RIE"
"RSD"
"SLS"

combobox6

deben aparecer los nombres segun se seleccione el area de arriba y cada usuario que se vaya seleccionando lo debe mandar a un listbox.
esto lo hago desde un userform que va dirigido a mi hoja 3 y cuando se seleccione los n usuarios pues todos los datos de estos usuarios que se seleccionaron deben aparecer en mi hoja tres.
los nombres de los usuarios y el area estan en mi hoja 1
espero me puedan ayudar
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
  #7  
Antiguo 02/10/08, 17:19:55
ST_ ST_ is offline
Gran participante
 
Usuario desde: sep 2008
Versión de Excel: Excel 2003
Conectado desde: México
Mensajes: 325
Predeterminado

Cita:
Empezado por oscarjosue Ver Mensaje
hola necesito ayuda!!!!!! .....espero me puedan ayudar
Oscar por favor lee la respuesta del mensaje privado que me enviaste,asi como la sugerencia del 'otro post (este)
__________________
Salu2 ST

Última edición por ST_ fecha: 02/10/08 a las 17:21:58.
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado



La franja horaria es GMT +2. Ahora son las 00:24:02.


© Ayuda Excel

Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

1 2 3 4 5 6 7