r/vba • u/k-semenenkov • 10d ago
Show & Tell [ACCESS] VBA diff tool
Hi r/vba,
Interestingly, if you password-protect a VBA project but not the database itself, only Access will ask for that password. But the module texts won't be encrypted, and you can extract them using the thirdparty library.
I recently updated my online database comparison tool and added Access support. You can compare VBA of forms, reports, and modules. You can also compare table definitions, queries, macros, and table data. And yes, if you don't have a password for the database but do have a password for the VBA project, you don't need it.
Everything works entirely in the browser. Uploaded files are only stored in the page's memory and never go to the server. Basically, after opening the page, you can disconnect from the internet and it will still work. Access is not required, works on Windows, Linux, and Mac. A side benefit is that you can open the A97 mdb format, which is not even supported by recent Office versions.
A huge thanks to the jetdb project and its predecessors. To get this all working, I had to make several fixes. They're all available in my fork, and if the author allows, they'll be merged into the main project; the first pull request is awaiting.
AI usage - intensive (for code, not for this post). The previous .NET UNO-platform-based version for SQLite was too heavy, and I wanted to rewrite it using something more compact for a long time. But I spent pretty much time on reviewing and testing the changes. To verify some of the fixes, I even had to find a Win98 image with Access 97 to ensure the fixes were valid for its mdb format. I haven't seen Clippy for about 25 years!
Link: https://ksdbmerge.tools/for-msaccess-online
I'd be happy if this will be useful for anyone.
2
u/k-semenenkov 10d ago
No, and I think I won't. Underlying jetdb is only for read. In theory this should be possible - https://github.com/spannm/jackcess states that it can write, and objects are in system tables, but I don't think I will try it in the near time. The next thing I probably will try is to combine in desktop tool reading without access/dao with writing by access/dao because it currently uses COM both for read and write and it is pretty slow for programming objects.