Ejemplos para extraer datos cuando Excel no abre normalmente.
' Módulo VBA: Extrae todas las hojas a un nuevo libro Sub ExtraerHojas() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim f$, wb As Workbook, ws As Worksheet f = Application.GetOpenFilename("Archivos Excel (*.xlsx;*.xlsm;*.xlsb),*.xlsx;*.xlsm;*.xlsb") If f = "False" Then Exit Sub Set wb = Workbooks.Open(Filename:=f, UpdateLinks:=0, ReadOnly:=True) Dim nuevo As Workbook: Set nuevo = Workbooks.Add For Each ws In wb.Worksheets ws.UsedRange.Copy With nuevo.Sheets.Add(After:=nuevo.Sheets(nuevo.Sheets.Count)) .Name = Left(ws.Name, 30) .Range("A1").PasteSpecial xlPasteValues .Range("A1").PasteSpecial xlPasteFormats End With Next nuevo.Sheets(1).Delete ' quita la hoja en blanco inicial nuevo.SaveAs ThisWorkbook.Path & "\\Recuperado_" & Format(Now, "yyyymmdd_HHMM") & ".xlsx", 51 wb.Close False Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Listo. Revisa el archivo 'Recuperado_*.xlsx'", vbInformation End Sub
# PowerShell: vuelca celdas de cada hoja a CSV param([string]$Path) if (-not (Test-Path $Path)) { Write-Host "Archivo no encontrado"; exit 1 } Add-Type -AssemblyName Microsoft.Office.Interop.Excel $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false try { $wb = $excel.Workbooks.Open($Path,$false,$true) foreach ($ws in $wb.Worksheets) { $csv = Join-Path (Split-Path $Path) ("Recuperado_" + $ws.Name + ".csv") $ws.SaveAs($csv,6) Write-Host "Exportada:" $csv } $wb.Close($false) } catch { Write-Error $_ } finally { $excel.Quit() }
# Python (offline): intenta leer con openpyxl/pandas import sys, pandas as pd from openpyxl import load_workbook path = sys.argv[1] wb = load_workbook(path, data_only=True, read_only=True) for ws in wb.worksheets: rows = ws.values df = pd.DataFrame(rows) out = f"Recuperado_{ws.title}.csv" df.to_csv(out, index=False) print("Exportado", out)