Comenta

A todos los visitantes del Blog, les aviso que he quitado el formulario de Comenta, por la simple razón de que recibía consultas, y aunque éstas se contestaban, no se reflejaban en el Blog para que los demás visitantes pudieran conocer las respuestas y solucionar situaciones similares.

Para enviarme comentarios o consultas, les solicito de favor que usen los espacios de abajo de cualquier página del Blog. Si no encuentran un tema dónde incluir sus consultas, lo pueden hacer en esta página o en la principal.

Sergio.

Si tienes Facebook, regálame un Like http://www.facebook.com/EXCELeINFO

  1. germantinao
    November 19, 2012 at 06:41

    Hola Sergio, espero que estés bien.
    Mi consulta es la siguiente: ¿es posible que un archivo de excel se abra cómo sólo lectura sin que aparezca ningún cartel y que, cuando se deban guardar los cambios, recién en ese momento te pida la contraseña?
    Necesito esto porque quisiera que los clientes a los cuales les envío el archivo lo abran directamente, pero que no puedan guardar los cambios, eso debo hacerlo yo nada más.

    Desde ya, muchas gracias.

    Germán.

    • November 19, 2012 at 12:04

      Que tal:

      Tienes dos opciones:

      1. Marcar el archivo como final: cuando los clientes abran el archivo les aparecerá un mensaje de que el archivo fue marcado como final y ellos deciden si lo editan o no. Entra a la pestaña archivo y elige Proteger archivo > Marcar como final.
      2. Asignar una contraseña de apertura y otra de escritura: los clientes podrán abrir el archivo con una contraseña, pero para hacer modificaciones tendrán que tener otra contraseña, de lo contrario pueden elegir como Sólo lectura. Elige guardar como (F12) y elige Herramientas > Opciones generals.

      Te en cuenta: de cualquier manera, los clientes siempre podrán guardar una copia de tu archivo en sus propias PC.

  2. germantinao
    November 19, 2012 at 12:21

    Está claro Sergio, como siempre, gracias.

    Ahora, ¿no sería posible combinar la macro del post https://exceleinfo.wordpress.com/2010/11/25/macro-para-impedir-que-se-guarde-un-archivo-de-excel/ con un pedido de contraseña? De forma tal que nadie pueda hacer “guardar como” aparte de mi, que soy quien tendría la contraseña?

    Gracias.

  3. Marco Antonio Cruz
    December 4, 2012 at 22:17

    Hola Sergio he echado una mirada a lo que tienes y tal vez tu me puedas apoyar,
    Tengo este dilema:
    Tengo registros de clientes con varios números telefónicos y lo que necesito es que si el registro 1 tiene dos teléfonos, se cree el mismo registro pero ahora que queden ambos registros con diferente numero.
    Ejm.

    Nombre tel1 tel2
    Marco CC 74674684 3465566

    Quedando de la siguiente manera:
    Nombre tel1
    Marco CC 74674684
    Marco CC 3465566

    Me puedes indicar mas o menos que es lo que tengo que hacer?

    Gracias.

    • December 5, 2012 at 11:10

      Deberás usar la siguiente macro:

      Sub test()
      Do While ActiveCell.Value ""
      If ActiveCell.Offset(0, 2).Value "" Then
      ActiveCell.Offset(1, 0).Select
      ActiveCell.EntireRow.Insert
      ActiveCell.Value = ActiveCell.Offset(-1, 0).Value
      ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(-1, 2).Value
      End If
      ActiveCell.Offset(1, 0).Select
      Loop
      End Sub

      Para que funcione deberás situarte en la primera celda donde comiencen tus datos, no en el encabezado, y se ejecutará hasta que encuentre una celda vacía.

      • Marco Antonio Cruz
        December 5, 2012 at 11:39

        Ok, gracias, lo ejecuto y te aviso, mil gracias.

      • Marco Antonio Cruz
        December 5, 2012 at 12:28

        Hola Sergio, me esta marcando un error de compilación: Error de sintaxis, le doy aceptar y me marca con la flecha amarilla la primera linea Sus test.

        De atenamno agradezco tu apoyo.

  4. December 5, 2012 at 12:45

    Así lo tienes ingresado ? Sus test

    Debería ser: Sub test()

    Copia todo el código que te mandé en un módulo y deberá correr.

    • Marco Antonio Cruz
      December 5, 2012 at 13:09

      Claro, meto todo, de echo copio y pego :S.

      • December 5, 2012 at 13:21

        Publica tu archivo con todo y la macro y compártemelo para darle una revisada.

  5. Marco Antonio Cruz
    December 5, 2012 at 13:43
    • December 5, 2012 at 14:06

      La macro no funciona por que la estructura que diste al principio es diferente.

      Habías comentado que tenías NOMBRE, TEL1, TEL2, y veo que tu archivo no tiene columnas y no sé cuáles son las columnas del teléfono.

      Nota: la macro es para 2 teléfonos.

  6. Marco Antonio Cruz
    December 5, 2012 at 14:12

    OK, y en el caso de sean mas como el ejemplo que mande solo tengo que cambiar el valor en esta linea?
    If ActiveCell.Offset(0, 2).Value “” Then

    • December 5, 2012 at 14:19

      No. El caso ya se vuelve más complicado por que no has definido hasta cuántos teléfonos tiene un registro.

      Por favor especifica bien los puntos, ya que cambió toda la problemática inicial a la que realmente es.

      • Marco Antonio Cruz
        December 5, 2012 at 14:33

        OK, cada registro puede llegar a tener hasta 6 teléfonos, pero algunos tienen menos.

    • December 5, 2012 at 15:28

      En base a tu archivo y tomando en cuenta que los datos comienzan en B1 y los teléfono están desde la E hasta la J, aplica esta macro:

      Sub test2()
      Application.ScreenUpdating = False
      Range(“B1”).Select
      Do While ActiveCell.Value “”
      With ActiveCell
      For i = 1 To 5
      .Offset(1, 0).EntireRow.Insert
      .Offset(1, 0).Value = .Value
      .Offset(1, 3).Value = .Offset(0, i + 3).Value
      Next i
      .Offset(6, 0).Select
      End With
      Loop
      Range(“E:E”).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
      Range(“B1”).Select
      Application.ScreenUpdating = True
      End Sub

  7. mateo buendia(MAT)
    August 15, 2013 at 17:30

    hola mi pregunta es…2 combobox dependientes y 2 textbox dependientes del segundo combobox , un textbox es la cantidad y el otro es el valor .como seria el codigo de este formulario,si tengo un formulario(userform)para determinada cantidad de hojas…y que al llamar este formulario me de los datos de la hoja activa, o sea que al estar en la hoja 1 el formulario me de los datos de esta hoja….igual en la hoja 2…en la hoja 100 ….y asi susesivamente…le cuento; he creado el codigo de los combobox (1 y 2) y me da bien al llamar el formulario en determinada hoja pero con los textbox (1 y 2) al relacionarlos con el combobox2 no me dan ,no funcionan por el cambio de hoja….muchisima gracias

    • August 15, 2013 at 18:29

      Podrías compartir tu archivo de ejemplo para darle una revisada por favor.

      Sin datos sensibles de tu archivo.

    • mateo buendia(MAT)
      August 16, 2013 at 00:37

      HOLA SERGIO….NO SE COMO HACERTE LLEGAR EL ARCHIVO….SI HAY FORMA DE TU CORREO PARA HACERTELO LLEGAR

      • August 16, 2013 at 08:55

        Si tienes cuenta de Hotmail u Outlook lo puedes compartir en Skydrive.

      • MAT
        August 16, 2013 at 21:35

        hola sergio…..creo que me atropeya la tecnologia…..si tengo cta en hotmail..pero no entiendo mucho de skydrive…explicame por favor.gracias

      • MAT
        August 16, 2013 at 21:38

        yo te envie a la madrugada el archivo por correo al de exceleinfo,mira haver si te llego…gracias

  8. buffon
    August 20, 2013 at 10:01

    lanzo una macro de office 2010 en office 2007 me sale error en worbooks(“libro1”)

    • August 20, 2013 at 12:37

      Me puedes compartir por favor la línea completa que te da error.

  9. buffon
    August 20, 2013 at 17:55

    i = InputBox(“ingresa numero de mes”, “Industrias Maviltex S.A.S”)
    Workbooks(“EFICIENCIA1”).Sheets(“Hoja3”).Range(“j3”).Value = i
    Workbooks(“EFICIENCIA1”).Sheets(“Hoja3”).Range(“l3”).Value = i
    ‘Workbooks(“mantenimiento”).Sheets(“Hoja3”).Range(“m2”).Value = i
    Workbooks(“mantenimiento”).Sheets(“Hoja3”).Range(“q3”).Value = i
    Workbooks(“EFICIENCIA1”).Sheets(“Hoja3”).Range(“ae1”).Value = i
    Workbooks(“indicadores confección”).Sheets(“Hoja1”).Range(“i1”).Value = i
    i = InputBox(“ingresa numero de semana”, “Industrias Maviltex S.A.S”)

    Workbooks(“EFICIENCIA1”).Sheets(“Hoja3”).Range(“p5”).Value = i – 1

    ‘ El error aparece en todas las lineas donde aparece workbooks(“nombre”); funciona bien en excel 2010 y 2013, pero al correrlo en excel 2007 no sirve muchas gracias por tu ayuda

  10. MAT
    August 25, 2013 at 22:16

    Hola sergio ,fue facil solucionar el problema que tenia con la pregunta anterior,modifique un poco tu codigo y lo adecue a mi formulario…ha hora tengo otro dilema.que es
    NO SOY EXPERTO EN EXCEL PERO ME DEFIENDO UN POCO….TENGO UN FORMULARIO CON DOS COMBOBOX (1-2) Y DOS TEXTBOX AMBOS DEPENDEN DEL COMBOBOX 2, CUAL SERIA EL CODIGO DE AUTOCOMPLETAR SI AL LLAMAR EL LISTADO DEL COMBOBOX 2 TENGO DATOS COMPUESTO,YO LOS TENGO SEPARADOS POR / Y QUE AL BUSCAR EL SEGUNDO O TERCER NOMBRE EN AUTOCOMPLETAR ME DE LOS VALORES DE LOS TEXTBOS

    Ej: EL COMBOBOX 1 EL LISTADO ES:
    SONY
    ALCATEL
    SAMSUNG

    EL COMBOBOX 2, ESTE SGTE LISTADO DEPENDE DE SONY :
    W1100/W205
    Z760/MIRO/TIPO
    SLAIDER W500/SLAIDER W580

    Y QUE AL BUSCAR Ej: W205 ME DE LOS VALORES DE LOS TEXTBOS

    LOS CODIGOS QUE TENGO DE ESTE FORMULARIO Y QUE ESTOY UTILIZANDO SON ESTOS:
    Private Sub BORRAR1_Click()
    ComboBox1 = Empty
    ComboBox2 = Empty
    TextBox1 = Empty
    TextBox2 = Empty
    End Sub

    Private Sub ComboBox1_Change()
    ComboBox2.Clear
    indice = ComboBox1.ListIndex + 9
    Cells(2, indice).Select
    Do While ActiveCell.Value “”
    ComboBox2.AddItem ActiveCell
    ActiveCell.Offset(1, 0).Select
    Loop
    End Sub

    Private Sub UserForm_Initialize()
    ComboBox1.Clear
    Me.StartUpPosition = 0
    Me.Left = 0
    Me.Top = 0
    Dim nombre As String
    Dim rango

    rango = sheets.Count

    For i = 1 To rango
    Range(“i1”).Select
    nombre = sheets(i).Name
    Next

    Do While ActiveCell.Value “”
    ComboBox1.AddItem ActiveCell
    ActiveCell.Offset(0, 1).Select

    Loop

    End Sub

    Private Sub ComboBox2_Change()
    On Error GoTo MANEJOERROR
    TextBox1.Value = Application.VLookup(Me.ComboBox2.Value, Range(“b3:d110”), 2, 0)
    TextBox2.Value = Application.VLookup(Me.ComboBox2.Value, Range(“b3: d110”), 3, 0)
    TextBox2 = Format(Val(TextBox2), “$ #,##0”)
    Exit Sub
    MANEJOERROR:
    MsgBox “BORRAR”, VBEXCLAMTION, “ACTUALIZAR”

    End Sub

    LE AGRADESCO DE ANTEMANO LA AYUDA Q ME PUEDA BRINDAR

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s