Variable con nombre de libro separado por espacio

Tengo 2 libros, uno llamado "origen nuevo" y otro "destino", necesito copiar una fórmula en el libro "destino", y que tenga relación con el libro "origen". La macro es la siguiente:

Dim wsOrigen As Workbook 
Dim Libro As String
Set wsOrigen = ThisWorkbook 'libro 'origen nuevo'
Libro = ActiveWorkbook.Name 'nombre del libro origen

Windows("destino").Activate  'libro donde voy a poner la formula

Sheets("Hoja1").Select 'selecciono la hoja 1

Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=+IF(RC[-6]="""","""",IF(" & [Libro] & "!RC[5]>0," & [Libro] & "!RC[5],RC[-1]))"

'la formula hace referencia al nombre libro origen (en la celda, la formula debe queda escrita así: =+SI(B2="";"";SI('[origen nuevo.xlsb]MENU'!M2>0;'[origen nuevo.xlsb]MENU'!M2;G2))

WsOrigen. Activate ' una vez escrita la fórmula, regresa al libro origen

El nombre del libro está en una variable para que no importe el nombre que este tenga, la fórmula siempre haga referencia a este libro.

El problema que tengo es que el nombre del libro tiene 2 palabras, es decir está separado por espacio, y al escribir la fórmula, en la celda nombre del libro no queda entre comilla simple, y eso ocasiona que no funcione.

¿Cómo podría hacer para que la variable tome el nombre de un libro que esta separado por espacios?

1 respuesta

Respuesta
1

En la fórmula de la macro hay que agregar la comilla simple y también hay que agregar el nombre de la hoja:

    Dim wsOrigen As Workbook
    Dim Libro As String
    Set wsOrigen = ThisWorkbook 'libro 'origen nuevo'
    Libro = ActiveWorkbook.Name 'nombre del libro origen
    Windows("destino").Activate  'libro donde voy a poner la formula
    Sheets("Hoja1").Select 'selecciono la hoja 1
    Range("H2").Select
    '
    ActiveCell.FormulaR1C1 = _
    "=+IF(RC[-6]="""","""",IF('[" & Libro & "]MENU'!RC[5]>0,'[" & Libro & "]MENU'!RC[5],RC[-1]))"

También puedes agregar el nombre de la hoja a una variable:

    Dim wsOrigen As Workbook
    Dim Libro As String
    Set wsOrigen = ThisWorkbook 'libro 'origen nuevo'
    Libro = ActiveWorkbook.Name 'nombre del libro origen
    hoja = "MENU"
    '
    Windows("destino").Activate  'libro donde voy a poner la formula
    Sheets("Hoja1").Select 'selecciono la hoja 1
    Range("H2").Select
    '
    ActiveCell.FormulaR1C1 = _
    "=+IF(RC[-6]="""","""",IF('[" & Libro & "]" & hoja & "'!RC[5]>0,'[" & Libro & "]" & hoja & "'!RC[5],RC[-1]))"

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Gracias por la respuesta, perdón, me equivoqué en cómo debe quedar la fórmula, escribo esto pero no me copia la fórmula al libro:

"=+IF(RC[-6]="""","""",IF('[" & Libro & "]'!RC[5]>0,'[" & Libro & "]'!RC[5],RC[-1]))"

Disculpa, no encuentro el punto donde está el error.

Te falta el nombre de la hoja origen, aquí esto poniendo el nombre de la hoja como variable

    Dim wsOrigen As Workbook
    Dim Libro As String
    Set wsOrigen = ThisWorkbook 'libro 'origen nuevo'
    Libro = ActiveWorkbook.Name 'nombre del libro origen
    hoja = "hoja1"
    '
    Windows("destino").Activate  'libro donde voy a poner la formula
    Sheets("Hoja1").Select 'selecciono la hoja 1
    Range("H2").Select
    '
    ActiveCell.FormulaR1C1 = _
    "=+IF(RC[-6]="""","""",IF('[" & Libro & "]" & hoja & "'!RC[5]>0,'[" & Libro & "]" & hoja & "'!RC[5],RC[-1]))"
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas