Disculpa me quede dormido después de responderte jaja
Cuando cargas un ComboBox lo puedes cargar con mas de una columna a la vez, de todas esas columnas, puedes asignar una como el texto que muestra visualmente al usuario, y otra con el valor real detrás de escena, y ahí es donde entra el BoundColumn.
En tu caso quedaría así (Tu lo habías hecho en el evento Activate del UserForm, yo prefiero usar el Initialize para este tipo de cosas). Iré linea por linea explicando:
Private Sub UserForm_Initialize()
End Sub
Primero vamos a definir la hoja, por si acaso luego en el futuro agregas mas hojas, poder usar esta función desde cualquiera de ellas sin tener que activarla. Lo haríamos así:
Dim bbdd As Worksheet: Set bbdd = Sheets("bbdd")
Luego, también vamos a definir cual es la ultima fila en ese rango que usaremos para cargar el ComboBox, de esa forma si en el futuro agregas mas archivos a la lista (o quitas) el rango se hace dinámico y crece o se reduce a la par de la lista, así (uF significaría "Ultima Fila"):
Dim uF As Integer
uF = bbdd.Range("I" & Rows.Count).End(xlUp).Row
ya luego solo quedaría cargar el combobox, así:
With Me.ComboBox1
.ColumnCount = 1
.RowSource = bbdd.Name & "!I2:J" & uF
.BoundColumn = 2
End With
Te explico que es cada cosa. Se usa With...End With para agregar varias propiedades al mismo control al mismo tiempo, sin tener que escribir Me.ComboBox1.NombreDePropiedad cada vez
. ColumnCount =1 Aquí le estamos diciendo, no importa cuantas columnas te agreguemos, tu solo muestra 1 (la primera en el rango, en este caso "I")
.RowSource = bbdd. Name & "!I2:J" & uF RowSource, en español seria "Filas Origen" o algo así, es una propiedad del ComboBox para agregar un rango de una vez, a diferencia de .AddItem que agrega un Item uno por uno, con RowSource agregas todo el rango de una. Y funciona así: NombreDeHoja!Rango. Pero esto puede ser dinámico y traerlo con variables como hemos hecho. Bbdd. Name (Nombre de la hoja) ! Desde I2:J <- hasta uF (la ultima fila)
. BoundColumn = 2 te hemos agregado 2 columnas (I & J) de ellas, quiero que el valor real sea lo que esta en la 2da (J)
Así que, si yo en cualquier parte de mi programa digo ComboBox1.Text me va a devolver el texto real que veo con mis ojos (la columna 1, I)
Pero si en cualquier momento digo ComboBox1.Value me va a devolver el valor detrás de escena que es lo que hay en la columna 2 (J)
Por ende, en tu Botón de Abrir, puedes llamar a la ruta con ComboBox1.Value y abrir tu documento Word a partir de ahí.
Y si yo entendí mal y esto no era lo que tu preguntaste.