access-analyzer
Analyze, export, refactor, and re-import Microsoft Access database applications. Use when working with .accdb/.mdb files to: (1) Create backups, (2) Export all objects (tables, queries, forms, reports, macros, VBA) to text files for version control and analysis, (3) Refactor exported code in VS Code, (4) Import changes back into Access. Includes automated export module based on ExportTodoSimple.bas.
SKILL.md
| Name | access-analyzer |
| Description | Analyze, export, refactor, and re-import Microsoft Access database applications. Use when working with .accdb/.mdb files to: (1) Create backups, (2) Export all objects (tables, queries, forms, reports, macros, VBA) to text files for version control and analysis, (3) Refactor exported code in VS Code, (4) Import changes back into Access. Includes automated export module based on ExportTodoSimple.bas. |
name: access-analyzer description: "Analyze, export, refactor, and re-import Microsoft Access database applications. Use when working with .accdb/.mdb files to: (1) Create backups, (2) Export all objects (tables, queries, forms, reports, macros, VBA) to text files for version control and analysis, (3) Optionally export table data or structure-only, (4) Refactor exported code in VS Code, (5) Import changes back into Access. Includes automated export module based on ExportTodoSimple.bas." license: MIT
Microsoft Access Analyzer & Refactoring Tool
Comprehensive workflow for analyzing, exporting, refactoring, and re-importing Microsoft Access database applications without manually adding export modules to each project.
When to Use This Skill
Use this skill when the user asks to:
- Analyze an Access database (.accdb or .mdb file)
- Export Access objects for version control or code review
- Refactor Access VBA code in a modern editor (VS Code)
- Apply changes back to the original Access database
- Create backups before making changes
- Understand the structure of an Access application
IMPORTANT: Always ask user if they want to export table data (Step 2) before running export scripts.
Core Workflow
Phase 1: Backup
Always create a timestamped backup before any operation:
DatabaseName_BACKUP_yyyyMMdd_HHmmss.accdb
Phase 2: Export All Objects
Export the complete Access application to a structured folder:
Exportacion_yyyyMMdd_HHmmss/
├── 00_RESUMEN_APLICACION.txt # Overview and inventory
├── 01_Tablas/ # Table structures (DDL)
│ ├── Access/ # Access DDL per table
│ │ ├── CLIENTES.txt
│ │ ├── PEDIDOS.txt
│ │ └── ...
│ └── SQLServer/ # SQL Server DDL per table
│ ├── CLIENTES.txt
│ ├── PEDIDOS.txt
│ └── ...
├── 02_Consultas/ # Queries as .sql files
├── 03_Formularios/ # Forms + VBA code
├── 04_Informes/ # Reports + VBA code
├── 05_Macros/ # Macro definitions
└── 06_Codigo_VBA/ # All VBA modules (.bas/.cls)
Key Features:
- UTF-8 encoding for perfect VS Code compatibility
- Spanish characters (á, é, Ã, ó, ú, ñ) preserved correctly
- Each table exported as individual DDL file (Access AND SQL Server formats)- Optional table data export (estructura sola o estructura + datos)- Individual .sql files for queries
- Complete VBA module extraction
- Table structure documentation with types and properties
Phase 3: Analysis & Refactoring
Once exported, analyze and refactor in VS Code:
- Review code quality and patterns
- Identify dependencies and relationships
- Apply refactoring patterns
- Add comments and documentation
- Fix bugs or improve logic
- Modernize code structure
Phase 4: Re-import (When User Requests)
Import modified code back into Access:
- Validate exported files haven't been corrupted
- Create new backup before import
- Import VBA modules
- Import query definitions
- Import form/report code
- Verify all imports successful
How to Execute
Step 1: Locate Access File
Ask user for the path to the .accdb or .mdb file, or search workspace.
Step 2: Ask About Table Data Export
CRITICAL: Always ask the user BEFORE running any export script:
¿Deseas exportar los DATOS de las tablas junto con la estructura?
[S] SÍ - Exporta estructura + datos (.table + .tabledata)
Útil para: backups completos, migración de datos
[N] NO - Exporta solo estructura (.table únicamente)
Útil para: control de versiones Git, refactorización
When to recommend each option:
- Use
-ExportTableData:$false(NO) for: code analysis, refactoring, Git version control - Use
-ExportTableData:$true(SÍ) for: complete backups, data migration, archival
Step 3: Create Backup
# Example
Copy-Item "C:\path\to\database.accdb" "C:\path\to\database_BACKUP_20260128_143000.accdb"
Step 4: Export Using VBA Module (with user's data choice)
The skill includes ExportTodoSimple.bas module that handles the complete export process.
Two approaches:
A) Temporary Injection (Recommended)
- Open Access database programmatically
- Temporarily import ExportTodoSimple module
- Execute
ExportAllsubroutine - Remove temporary module
- Close database
B) PowerShell Automation with Git (RECOMENDADO) Use the access-export-git.ps1 script.
IMPORTANT: Pass the -ExportTableData parameter based on user's answer from Step 2:
# If user chose NO (solo estructura)
.\access-export-git.ps1 -DatabasePath "path\to\db.accdb" -ExportTableData:$false
# If user chose SÍ (estructura + datos)
.\access-export-git.ps1 -DatabasePath "path\to\db.accdb" -ExportTableData:$true
The script will:
- Opens AccessAnalyzer.accdb tool database
- Calls
RunCompleteExportwith the exportTableData parameter - Exports to persistent folder:
{DatabaseName}_Export - Initializes Git repository in export folder (if not exists)
- Creates .gitignore (excludes .ldb, backups, errors)
- Crea automáticamente
REFACTORING_PLAN.mdcon checklist y tracking - Commits all changes with timestamp
- Shows git diff stats
- Pregunta si quiere abrir VS Code automáticamente
Ventajas del workflow Git:
- ✅ Historial completo de cambios
- ✅ Detección automática de archivos modificados
- ✅ Rollback a versiones anteriores
- ✅ Solo importa lo que cambió (más rápido y seguro)
- ✅ Plan de refactorización incluido
Step 5: Open in VS Code
Al exportar con access-export-git.ps1, se pregunta automáticamente:
¿Abrir en VS Code para refactorizar? (S/N)
O manualmente:
code "path\to\Exportacion_folder"
Step 6: Analyze & Refactor
- Start with
REFACTORING_PLAN.md- Plan generado automáticamente con:- Inventario de objetos exportados
- Checklist de refactorización por fases
- Template para documentar cambios
- Notas para código problemático
- Review
00_RESUMEN_APLICACION.txtfor database overview - Explore
06_Codigo_VBA/for main business logic - Review queries in
02_Consultas/ - Check forms/reports for UI logic
Usando control de versiones Git:
- Modifica los archivos .bas o .txt que necesites refactorizar
- Guarda cambios en VS Code
- Git detectará automáticamente los archivos modificados
Step 7: Re-import Inteligente (Solo Cambios)
Use access-import-changed.ps1 para importar solo lo modificado:
# Modo dry-run (ver qué se importarÃa)
.\access-import-changed.ps1 -TargetDbPath "C:\path\to\db.accdb" `
-ExportFolder "C:\path\to\db_Export" `
-DryRun
# Importación real
.\access-import-changed.ps1 -TargetDbPath "C:\path\to\db.accdb" `
-ExportFolder "C:\path\to\db_Export"
Cómo funciona:
- Detecta archivos modificados con
git diff --name-only HEAD~1 HEAD - Clasifica por tipo: Consultas, Formularios, Informes, Macros, Módulos VBA
- Crea backup automático antes de importar
- Importa SOLO los objetos que cambiaron
- Muestra progreso con OK/ERROR por cada objeto
- Genera reporte final con count de importados y errores
- Pregunta si quiere abrir Access automáticamente para verificar cambios
Ventajas:
- ✅ Solo importa lo modificado (evita errores en objetos que funcionan)
- ✅ Mucho más rápido (3 objetos vs 621 totales)
- ✅ Menor riesgo de romper objetos que no tocaste
- ✅ Backup automático por seguridad
- ✅ Apertura automática de Access para validar
REFACTORING_PLAN.md - Plan Automático
Al exportar con access-export-git.ps1, se genera automáticamente un Plan de Refactorización que incluye:
Contenido del Plan
- 📊 Inventario - Conteo automático de todos los objetos exportados
- 🎯 Objetivos - Checklist editable de metas de refactorización
- ✅ Checklist por Fases:
- Análisis (revisar resumen, identificar módulos principales)
- Planificación (priorizar, definir estándares)
- Ejecución (refactorizar módulos, optimizar queries)
- Validación (dry-run, importar, probar)
- 📠Registro de Cambios - Template para documentar cada modificación
- 🔠Notas de Refactorización:
- Código problemático encontrado
- Dependencias identificadas
- Queries que necesitan optimización
- 🚀 Comandos Git - Referencia rápida de comandos útiles
- 📌 Próximos Pasos - GuÃa de workflow
Uso del Plan
- Editar objetivos según necesidades
- Marcar checkboxes conforme avanza (
- [x]) - Documentar cada cambio en registro
- Añadir notas sobre problemas encontrados
- Versionar con Git (historial de planificación)
Important Notes
Cuándo Exportar Datos vs Solo Estructura
Exportar SOLO estructura (-ExportTableData:$false):
- ? Control de versiones Git (archivos más pequeños)
- ? Análisis de esquema de base de datos
- ? Refactorización de código VBA y queries
- ? Documentación de estructura
- ? Comparación de versiones de esquema
- ?? Los archivos
.tabledatano se versionan bien en Git (grandes, binarios)
Exportar estructura + datos (-ExportTableData:$true):
- ? Backup completo antes de migraciones
- ? Transferir datos entre entornos
- ? Archivar estado completo de la aplicación
- ? Análisis de datos reales
- ? Testing con datos de producción
- ?? Archivos más grandes, commit Git pesado
Recomendación general: Para workflows de refactorización con Git, usa -ExportTableData:$false. Solo incluye datos para backups específicos fuera de Git.
UTF-8 Encoding
All exports use UTF-8 encoding. VS Code will display Spanish characters perfectly:
- ✅ Acentos: á, é, Ã, ó, ú
- ✅ Ñ and other special characters
- ✅ No manual encoding changes needed
VBA Access Requirements
Access must allow programmatic access to VBA project:
- File → Options → Trust Center → Trust Center Settings
- Enable "Trust access to the VBA project object model"
Limitations
- Cannot export binary objects (images, OLE objects)
- Form/report visual layout exported as text (not editable visually)
- Macros exported as definitions (not executable outside Access)
- Linked tables show connection info only
Safety
- Always creates backup before operations
- Non-destructive exports (original database unchanged)
- Import creates new backup before applying changes
- Logs all operations for traceability
Scripts Reference
access-export-git.ps1 â RECOMENDADO
Exportación automatizada con control de versiones Git integrado.
Usage:
# Pregunta interactivamente sobre exportar datos
.\access-export-git.ps1 -DatabasePath "C:\export\test\appGraz.accdb"
# Solo estructura (sin datos) - ideal para Git
.\access-export-git.ps1 -DatabasePath "C:\export\test\appGraz.accdb" -ExportTableData:$false
# Estructura + datos - backup completo
.\access-export-git.ps1 -DatabasePath "C:\export\test\appGraz.accdb" -ExportTableData:$true
# Con idioma específico
.\access-export-git.ps1 -DatabasePath "C:\export\test\appGraz.accdb" -Language "EN"
Parámetros:
-DatabasePath: Ruta al archivo .accdb/.mdb (obligatorio)-ExportTableData:$true= estructura + datos,$false= solo estructura (pregunta si se omite)-Language: Idioma de exportación (ES/EN/DE/FR/IT, default: ES)-ExportFolder: Carpeta destino (default:{DatabaseName}_Export)
Características:
- Pregunta interactivamente si exportar datos de tablas (si no se especifica parámetro)
- Exporta a carpeta persistente:
{DatabaseName}_Export - Inicializa repositorio Git automáticamente
- Crea .gitignore para archivos temporales (.ldb, backups, errors)
- Commit automático con timestamp
- Muestra estadÃsticas de archivos exportados
Returns: Carpeta de exportación con Git inicializado
access-import-changed.ps1 â RECOMENDADO
Importación inteligente que solo importa archivos modificados detectados por Git.
Notas recientes (importacion robusta):
- Soporta consultas en
.sql(crea QueryDef directamente). - Elimina comentarios de linea
--antes de crear la consulta. - Permite seleccion manual con
-Interactiveo por nombre (-QueryNames,-ModuleNames,-FormNames,-ReportNames,-MacroNames). - Abre Access despues de liberar COM para evitar ventana en blanco o bloqueo.
- Para modulos/clases usa VBE (requiere "Trust access to the VBA project object model").
Usage:
# Dry-run (ver qué se importarÃa)
.\access-import-changed.ps1 -TargetDbPath "C:\path\to\db.accdb" `
-ExportFolder "C:\path\to\db_Export" `
-DryRun
# Importación real
.\access-import-changed.ps1 -TargetDbPath "C:\path\to\db.accdb" `
-ExportFolder "C:\path\to\db_Export"
CaracterÃsticas:
- Detecta cambios con
git diff HEAD~1 HEAD - Solo importa objetos modificados (no todo)
- Backup automático antes de importar
- Progreso detallado por objeto (OK/ERROR)
- Reporte final de importados/errores
Returns: Count de objetos importados y errores
access-import.ps1
Re-import all exported objects back to Access (importación completa).
Usage:
.\access-import.ps1 -TargetDbPath "C:\path\to\db.accdb" -ImportFolder "C:\export"
# Con idioma especÃfico
.\access-import.ps1 -TargetDbPath "C:\path\to\db.accdb" -ImportFolder "C:\export" -Language "EN"
CaracterÃsticas:
- Backup automático antes de importar
- Compatible con carpetas multiidioma
- Sin interrupciones (sin MsgBox)
- Importa completo: queries, forms, reports, macros, VBA
Returns: Import log with success/failure details
access-backup.ps1
Create timestamped backup of Access file.
Usage:
.\access-backup.ps1 -DatabasePath "C:\path\to\db.accdb"
Returns: Path to backup file
Common Patterns
Pattern 1: Workflow Completo con Git (RECOMENDADO)
# Claude pregunta PRIMERO:
# "¿Deseas exportar los DATOS de las tablas? (S/N)"
# Usuario responde: "N" (solo estructura para Git)
# 1. Primera exportación con Git (solo estructura - ideal para control de versiones)
cd C:\Users\juanjo_admin\.copilot\skills\access-analyzer\scripts
.\access-export-git.ps1 -DatabasePath "C:\export\test\appGraz.accdb" -ExportTableData:$false
# 2. Abrir en VS Code
cd C:\export\test\appGraz_Export
code .
# 3. Refactorizar archivos en VS Code
# - Edita módulos .bas en 06_Codigo_VBA/
# - Modifica consultas .txt en 02_Consultas/
# - Guarda cambios
# 4. Ver cambios detectados por Git
git status
git diff
# 5. Crear commit con cambios
git add -A
git commit -m "Refactorización: mejorar lógica de X"
# 6. Ver qué se importarÃa (dry-run)
cd C:\Users\juanjo_admin\.copilot\skills\access-analyzer\scripts
.\access-import-changed.ps1 -TargetDbPath "C:\export\test\appGraz.accdb" `
-ExportFolder "C:\export\test\appGraz_Export" `
-DryRun
# 7. Importar SOLO lo modificado
.\access-import-changed.ps1 -TargetDbPath "C:\export\test\appGraz.accdb" `
-ExportFolder "C:\export\test\appGraz_Export"
# 8. Si algo salió mal, rollback con Git
cd C:\export\test\appGraz_Export
git log --oneline # Ver historial
git revert HEAD # Deshacer último commit
# O restaurar backup: appGraz_BACKUP_timestamp.accdb
Pattern 2: Quick Analysis (Sin Git)
User: "Analyze this Access database: C:\project\inventory.accdb"
Claude asks: "¿Deseas exportar los DATOS de las tablas? (S/N)"
User: "N" (solo necesito analizar código)
1. Create backup
2. Export structure only (-ExportTableData:$false)
3. Open in VS Code
4. Show 00_RESUMEN_APLICACION.txt
5. Provide high-level overview
Pattern 3: Backup Completo con Datos
User: "Create a complete backup with data for migration"
Claude asks: "¿Deseas exportar los DATOS de las tablas? (S/N)"
User: "S" (necesito los datos para migración)
1. Create timestamped backup of .accdb file
2. Export with -ExportTableData:$true
3. Archive export folder for migration
4. Document table structures and data formats
Pattern 4: Refactor Specific Module
User: "Refactor the invoice calculation module"
1. Export if not already done
2. Locate module in 06_Codigo_VBA/
3. Analyze code
4. Suggest improvements
5. Apply refactoring when approved
6. Re-import when user confirms
Pattern 5: Version Control Setup
User: "Set up version control for this Access app"
1. Export complete structure
2. Initialize git repository in export folder
3. Create .gitignore for Access-specific files
4. Create initial commit
5. Document workflow for team
Pattern 6: Database Documentation
User: "Document this Access database"
1. Export all objects
2. Analyze table relationships
3. Map query dependencies
4. Document form workflows
5. Generate comprehensive markdown documentation
Reference Files
- ExportTodoSimple.bas - Complete VBA export module (original)
- AccessObjectTypes.md - Reference for Access object types and properties
- VBA-Patterns.md - Common VBA patterns and refactoring guidelines
Troubleshooting
"Cannot access VBA project"
Solution: Enable "Trust access to the VBA project object model" in Access Trust Center settings.
"Export creates garbled characters"
Solution: Verify UTF-8 encoding in exported files. Re-export if necessary.
"Import fails for specific objects"
Solution: Check import log for specific errors. Some objects may need manual intervention.
"Database is locked/in use"
Solution: Close all Access instances and try again. Check for .laccdb lock files.
Security Considerations
- Never commit database files (.accdb) to version control
- Backup before any destructive operation
- Review imported code before executing in production
- Keep backups in separate location from source
- Use source control for exported text files only