Has usado alguna vez Microsoft Excel como índice para localizar documentación?
Imagina el excel de la foto en el que usas la columna G para enlazar a documentos de algún recurso compartido.
Y que pasa cuando toda esa documentación se migra a otro servidor/share?
Podemos corregir automáticamente la ruta antigua por la nueva con Powershell:
Imagina el excel de la foto en el que usas la columna G para enlazar a documentos de algún recurso compartido.
Y que pasa cuando toda esa documentación se migra a otro servidor/share?
Podemos corregir automáticamente la ruta antigua por la nueva con Powershell:
function Release-Ref ($ref) {
([System.Runtime.InteropServices.Marshal]::ReleaseComObject(
[System.__ComObject]$ref) -gt 0)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
### main ###
$cambios=0
$buscar=read-host "Cadena a buscar"
$buscar=$buscar -replace '\\','\\' #para escapar el caracter reservado barra
$buscar=$buscar -replace '\$','\$' #para escapar el caracter reservado dollar
$reemplazar=read-host "Reemplazar por"
$archivo=gci(".\IndiceDocumentacion.xlsx")
$ruta=$archivo.directoryname
$nombre=$archivo.basename
$extension=$archivo.extension
$filenamenew=$nombre + "_corregido" + $extension
$objExcel = new-object -comobject excel.application
$objExcel.Visible = $false
$objExcel.DisplayAlerts = $False
$objWorkbook = $objExcel.Workbooks.open($archivo.fullname)
$objworksheets=$objWorkbook.Worksheets
$objworksheets|%{
write-host $_.name -fore cyan
$objWorksheet = $objWorkbook.Worksheets.Item($_.name)
$hyperlinks = @($objWorksheet.hyperlinks)
$hyperlinks|%{
if ($_.address -match $buscar)
{
write-host $_.Address
$_.address=$_.address -replace("$buscar","$reemplazar")
$cambios=1
}
}#fin del foreach
}#fin de recorrer worksheets
if ($cambios -eq 1){$objWorkbook.SaveAs("$ruta\$filenamenew")}
else{write-host "No hay cambios a realizar en $nombre$extension" -back green -fore black}
$objExcel.Quit()
$a = Release-Ref($objWorksheet)
$a = Release-Ref($objWorkbook)
$a = Release-Ref($objExcel)

Comentarios
Publicar un comentario