
Dentro de nuestra empresa utilizamos varios libros de Excel que se vinculan con otros libros de Excel.
Con nuestro servicio, esto está bien ya que todos acceden a una unidad de red compartida y las rutas de archivo para todos los archivos vinculados siguen siendo las mismas.
Sin embargo, ahora deseamos utilizar servicios de almacenamiento en la nube, por ejemplo, Dropbox, pero hemos tenido problemas. Con todos los servicios que hemos probado, la ruta de los archivos es diferente para cada máquina. Por ejemplo, la misma carpeta en dos máquinas diferentes tendría las ubicaciones de los archivos como se muestra a continuación:
Máquina 1 Dropbox = C:[máquina 1]\Dropbox\Carpeta Excel\Archivo Excel
Máquina 2 Dropbox = C:[máquina 2]\Dropbox\Carpeta Excel\Archivo Excel
Cuando esto sucede, debes elegir la fuente de los enlaces cada vez que abres el archivo desde una máquina diferente. Si crea un archivo con enlaces a otros archivos en la máquina 1 y luego lo mueve a la máquina 2, la máquina 2 no sabe dónde están almacenados los archivos con la 'máquina 1' en la ruta. Esta es una gran barrera para nosotros al usar este tipo de almacenamiento, ya que cada usuario tendría que cambiar cada archivo cada vez que lo abre.
Se vuelve particularmente grave cuando se usa PowerPivot y se vincula a otros archivos en el modelo de datos, ya que todas las fuentes de datos del modelo de datos también deben actualizarse.
Entiendo por qué sucede esto, pero ¿hay alguna manera de solucionar este problema y hacer que los archivos se vinculen de tal manera que los vínculos sean relativos en lugar de absolutos?
Estamos usando una combinación de Office 2013 y 2016.
Respuesta1
En determinadas circunstancias, los enlaces externos creados en Excel utilizarán rutas relativas en lugar de rutas absolutas. Esto depende de la ubicación de las hojas de cálculo. La forma más sencilla es almacenar los documentos de Excel en la misma carpeta.
Consulte esta URL para obtener más información (extracto a continuación):https://support.microsoft.com/en-us/kb/328440
- Si el archivo vinculado y el archivo de datos de origen no están en la misma unidad, la letra de la unidad se almacena con una ruta al archivo y su nombre.
- Si el archivo vinculado y el archivo de datos de origen están en la misma carpeta, solo se almacena el nombre del archivo.
- Si el archivo de datos de origen está ubicado en una carpeta anidada en la misma carpeta raíz que el archivo vinculado, se almacena una propiedad para indicar la carpeta raíz. Todas las partes de la ruta que se comparten no se almacenan. Por ejemplo, si el archivo vinculado C:\Mydir\Linked.xls depende de C:\Mydir\Files\Source.xls, la única parte de la ruta que se almacena es \Files\Source.xls.
- Si el archivo de datos de origen está una carpeta por debajo del archivo vinculado, se almacena una propiedad para indicarlo. Por ejemplo, el archivo vinculado es C:\Mydir\Files\Myfile\Linked.xls y el archivo de datos de origen es C:\Mydir\Files\Source.xls. Excel almacena sólo \MyDir\Files\ .. \Source.xls. Nota Esto permite mantener un vínculo cuando el archivo vinculado se copia a una subcarpeta adicional de la carpeta en la que se encuentra el archivo fuente. Por ejemplo, el archivo vinculado es C:\Mydir\Files\Myfiles1\Linked.xls y el archivo de datos de origen es C:\Mydir\Files\Source.xls, el archivo vinculado, Linked.xls, se copia de la carpeta C:\Mydir\Files\Myfiles1 a una carpeta llamada C:\Mydir\Files\Myfiles2, y se mantiene el enlace a C:\Mydir\Files\Source.xls.
Respuesta2
No sé si le ayudará en su situación, pero nadie ha mencionado todavía que hay una configuración para indicarle a Excel que use rutas relativas versus absolutas. Y si realmente desea utilizar rutas relativas, desafortunadamente, Microsoft intentará ser útil y las hará relativas a ese usuario, por lo que los enlaces solo funcionarán si puede lograr que los destinos sean exactamente la misma ruta relativa para cada usuario. Esa fue la sugerencia rechazada de otra persona.
Respuesta3
Por lo tanto, es posible tener una ruta relativa en lugar de una ruta absoluta, de modo que sus fuentes de datos continúen funcionando siempre que mantenga los archivos de fuente de datos en la misma ubicación que la hoja de cálculo que los utiliza.
Sin embargo, la interfaz de usuario de Excel no parece tener ninguna forma de cambiar la ruta.
Pero puedes editar el XLSX de una manera diferente que con la interfaz de usuario. Si cambia el nombre de su archivo XLSX a .zip, puede extraerlo "como si" fuera un archivo zip (en realidad, el libro de Excel es un archivo comprimido). Luego, en el archivo zip extraído, abra el directorio xl y allí el archivo "connections.xml".
Allí encontrará el "archivo fuente", puede cambiarlo y hacer que haga referencia únicamente al nombre del archivo.
Luego, mueva "connections.xml" nuevamente al archivo de Excel "comprimido" y cámbiele el nombre a XLSX.
Tenga en cuenta que no basta con comprimir el directorio y cambiarle el nombre a XLSX, porque cualquier comando zip puede utilizar una variación de algoritmos y opciones de compresión que no siempre serán compatibles con Microsoft Excel...
Lo mejor es mover "connections.xml" nuevamente al archivo zip ya existente (o incluso mejor, editar el archivo directamente en el archivo zip, si su controlador de archivos zip lo permite).
El archivo ExcelFile.xlsx\xl\connections.xml se verá así:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<connections xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="xr16" xmlns:xr16="http://schemas.microsoft.com/office/spreadsheetml/2017/revision16"><connection id="1" xr16:uid="{F9606253-9C57-4B65-839A-8DEF5AAEA9F7}" keepAlive="1" name="ThisWorkbookDataModel" description="Data Model" type="5" refreshedVersion="6" minRefreshableVersion="5" background="1"><dbPr connection="Data Model Connection" command="Model" commandType="1"/><olapPr sendLocale="1" rowDrillCount="1000"/><extLst><ext uri="{DE250136-89BD-433C-8126-D09CA5730AF9}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:connection id="" model="1"/></ext></extLst></connection><connection id="2" xr16:uid="{7FE915B8-2095-40EC-B6DC-A589A5A2D08D}" name="TimeTrackingUserEntryLog" type="103" refreshedVersion="6" minRefreshableVersion="5" refreshOnLoad="1" saveData="1"><extLst><ext uri="{DE250136-89BD-433C-8126-D09CA5730AF9}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:connection id="TimeTrackingUserEntryLog" autoDelete="1"><x15:textPr prompt="0" sourceFile="C:\Dropbox\Wonderful\LifeorLive\TimeTrackingUserEntryLog.csv" tab="0" comma="1"><textFields count="5"><textField type="YMD"/><textField/><textField type="text"/><textField type="text"/><textField type="text"/></textFields></x15:textPr><x15:modelTextPr headers="1"/></x15:connection></ext></extLst></connection></connections>
donde C:\Dropbox, etc. es la ruta a mi fuente de datos, que resulta ser un archivo csv.
Puede eliminar la ruta completa y simplemente dejar "datasourcefilename.csv" allí.
¡Espero que ayude! ^^
Respuesta4
La solución de trabajo se puede encontrar aquí:
https://excel.tv/how-to-create-a-relative-file-path-in-power-query/