Macro VBA Para Catalogo de productos

Tengo una pequeña base de datos en excel, en la cual quiero generar un catalogo de productos como lo pueden ver en la siguiente imagen:

Tengo las imágenes en una carpeta con los textos de la columna BARRAS en el "documento A", las cuales se acomodan con un macro en el "documento B" re dimensionando todas las imágenes con las mismas dimensiones.

¿Cómo puedo hacer para pasar el "documento A" al "documento B"?

Dejo el código del "documento B" para las imágenes

Dim i As Integer
Dim sFilename As String
Dim bcontinue As Boolean
Dim spath As String

Sub Columna_A()
On Error Resume Next

spath = "C:\Users\Marcof\Documents\catalogo\"

i = 1
bcontinue = True
While bcontinue
sFilename = Worksheets(1).Cells(i, 1).Value
If sFilename = "" Then
bcontinue = False
Else

Cells(i, 1).Select
ActiveSheet.Pictures.Insert(spath + sFilename + ".jpg").Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 85
Selection.ShapeRange.Width = 115
Selection.Left = ActiveSheet.Range("A" & i + 1).Left
Selection.Top = ActiveSheet.Range("A" & i + 1).Top
i = i + 15
End If
Wend
End Sub

1 respuesta

Respuesta
1

H o l a:

Hay algunas cosas que no entiendo en tu petición:

  • La macro que pusiste pone las imágenes hacia abajo y las imagen que pusiste las tienes hacia a la derecha. Quieres que arregle la macro para que ponga las imágenes hacia la derecha, ¿una imagen por columna?
  • ¿Cuándo dices ""documento A" al "documento B"" te refieres a que tienes 2 archivos? La macro que pusiste no trabaja con 2 libros, trabaja con 2 hojas. ¿Quieres qué la macro lea los nombres de los archivos de la hoja1 y ponga la información en la hoja2?
  • En tu imagen abaja de cada ejemplo pusiste: "CÓDIGO", "DESCRIPCIÓN", "PRECIO", ¿quieres qué la macro ponga esas palabras o quieres que ponga los datos de cada imagen?
  • Por último, puedes enviarme tu archivo que contiene los nombres de las imágenes de tu ejemplo y también me envías las 3 imágenes que pusiste en el ejemplo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “debegt” y el título de esta pregunta.

Hola gracias por tu respuesta, te comento, la macro pone las imágenes hacia abajo solo de una columna, tengo 3 macros una para cada columna (A ser posible debería ser una sola macro que hiciera todo), la macro trabaja únicamente con una hoja, el texto lo debo copiar a mano de un documento a otro (trabajo con 2 documentos), me gustaría copiar todos los datos de todas las columnas "CODIGO, DESCRIPCION, BARRAS Y PRECIO" del documento A al documento B pero ya ordenado como esta en la imagen con una macro.

Dejo una imagen ejemplo de como debería de quedar el catalogo con varios productos:

PD. Te envíe el correo con los documentos y las imágenes, saludos.

H o l a:

Te anexo la macro

Sub InsertarImagenes()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    h2.Cells.Clear
    h2.DrawingObjects.Delete
    h2.Columns("A:Z").ColumnWidth = 21.43
    h2.Columns("A:Z").HorizontalAlignment = xlCenter
    '
    ruta = ThisWorkbook.Path & "\"
    j = 1
    k = 1
    h2.Select
    For r = 1 To h1.[G1]
        For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
            h2.Cells(j, k) = h1.Cells(i, "C")
            h2.Cells(j + 7, k) = h1.Cells(i, "A")
            h2.Cells(j + 8, k) = h1.Cells(i, "B")
            h2.Cells(j + 9, k) = h1.Cells(i, "D")
            arch = h1.Cells(i, "C") & ".jpg"
            If Dir(ruta & arch) <> "" Then
                h2.Pictures.Insert(ruta & arch).Select
                Selection.ShapeRange.LockAspectRatio = msoFalse
                Selection.ShapeRange.Height = 85
                Selection.ShapeRange.Width = 115
                Selection.Left = h2.Cells(j + 1, k).Left
                Selection.Top = h2.Cells(j + 1, k).Top
            End If
            k = k + 1
        Next
        k = 1
        j = j + 15
    Next
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

Hola, gracias por ayuda, estuve tratando de correr la macro, pero no logro hacer que funcione correctamente, al ejecutarla no copia nada, solamente hace las columnas más anchas.

Al quitar la siguiente parte del código;

For r = 1 To h1.[G1] Next

copia todo, hacia el lado derecho sin bajar de filas, podrías guiarme para hacer correr la macro correctamente, gracias, Saludos.

En la hoja que te envié van las instrucciones de cómo debes poner la lista de productos en la hoja1.

Tienes que tener 2 hojas en la hoja1 van los nombres de las imágenes. En la hoja2 no pongas nada.

No modifiques la macro.

Tienes que poner todos tus datos en la hoja1, presionas el botón y te va a poner las imágenes y sus datos en la hoja2.

Es más sencillo trabajar todo en un mismo libro. Después si quieres, puedes copiar la hoja2 a un nuevo libro.

Estas son las instrucciones que te puse en la hoja1:

  1. En la "Hoja1" escribes la lista de códigos que quieres poner la imagen.
  2. Si quieres que una imagen se repita, tienes que repetir el código, por ejemplo si quieres que la TAZA aparezca 2 veces deberás poner en la lista 2 veces el código "12345"
  3. En la celda G1, tienes que poner el número de repeticiones que quieres que se repitan las imágenes. En este ejemplo las 4 imágenes se pondrán en una fila y se repetirán 6 veces hacia abajo.

Muchas gracias, no había visto el correo lo siento, ya funciona correctamente el macro, pero tal vez me di a entender mal, las imágenes nunca se repiten, las imágenes van asignadas a un código de barra y siempre van a ser distintas, en esencia el macro funciona pero necesito agregar N filas y si agrego mas de 4 filas, se agrega una columna extra en la 2da hoja, es posible que en vez de agregar la columna extra baje de fila, te dejo una imagen de ejemplo:

Son detalles que nunca comentaste, el archivo que me enviaste no traía las imágenes. En tu primer imagen que pusiste tenías la taza al principio y al final y después tenías las 4 imágenes repetidas hacia abajo:


Con los ejemplos es como se hace la macro, no puedo saber cómo quieres el resultado si no lo pones el ejemplo.


Pero todo se puede arregla,

Con mucho gusto te ayudo con todas tus peticiones.

Valora esta respuesta y crea una nueva pregunta en el tema de microsoft excel, en el desarrollo de la pregunta escribe: "para Dante Amor"


En la nueva pregunta me explicas con más detalle y con ejemplos reales cómo quieres el resultado. Empiezo a realizar los cambios a la macro y en cuanto tengas la nueva pregunta te la envío.

Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas