{"id":13706605,"url":"https://github.com/chelh/VBASync","last_synced_at":"2025-05-05T20:32:18.582Z","repository":{"id":45210650,"uuid":"63020138","full_name":"chelh/VBASync","owner":"chelh","description":"Cross-platform tool to synchronize macros from an Office VBA-enabled file with a version-controlled folder","archived":false,"fork":false,"pushed_at":"2017-07-22T03:14:42.000Z","size":486,"stargazers_count":161,"open_issues_count":10,"forks_count":46,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-11-13T14:47:38.659Z","etag":null,"topics":["cross-platform","diff","excel","extract","linux","ms-office","outlook","powerpoint","vba","version-control","windows","word"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chelh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-10T21:59:52.000Z","updated_at":"2024-10-02T10:41:02.000Z","dependencies_parsed_at":"2022-09-05T18:11:57.274Z","dependency_job_id":null,"html_url":"https://github.com/chelh/VBASync","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chelh%2FVBASync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chelh%2FVBASync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chelh%2FVBASync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chelh%2FVBASync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chelh","download_url":"https://codeload.github.com/chelh/VBASync/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252571310,"owners_count":21769806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cross-platform","diff","excel","extract","linux","ms-office","outlook","powerpoint","vba","version-control","windows","word"],"created_at":"2024-08-02T22:01:01.938Z","updated_at":"2025-05-05T20:32:18.006Z","avatar_url":"https://github.com/chelh.png","language":"C#","readme":"# VBA Sync\u0026#x2001;![VBA Sync logo](http://i.imgur.com/sQAsBy4.png)\n\nMicrosoft Office VBA code is usually held in binary format, making proper\nversion control difficult. VBA Sync synchronizes macros between a\nVBA-enabled file and a folder, enabling easy version control using Git, SVN,\nMercurial, or any other VCS.\n\n**I no longer maintain this project. I have released it into the public domain.**\n\n[**Download my final release (v2.2.0)**](https://github.com/chelh/VBASync/releases/latest)  \n[**Look for a newer version, or advertise your new version**](https://github.com/chelh/VBASync/issues/36)\n\n## Features\nVBA Sync works *directly with the Office file,* unlike most\nother solutions, which use a host application (e.g., Excel) to manipulate\nthe VBA code. This gives it several advantages:\n  * Does not require special Excel settings.\n  * Does not add to your VBA code base.\n  * Allows you to use any off-the-shelf version control system.\n  * Allows you to cherry-pick which modules to extract or publish.\n  * Minimizes spurious changes by ignoring case on variable names,\n    making merges easier.\n  * Extracts full code including several hidden attributes.\n  * Also extracts settings not tied to a particular module,\n    like references.\n  * Generates FRX files compatible with the VBE, but\n    *without* any embedded timestamp.\n  * Allows you to extract or publish a FRM module without necessarily\n    updating its FRX module.\n  * Works with document or worksheet modules in the same way\n    as any other module.\n  * Supports Excel 97-2003, Excel 2007+, Word 97-2003, Word 2007+,\n    PowerPoint 2007+, and Outlook files.\n  * Compatible with Windows, Linux, and Mac.\n\n## Using\nVBA Sync has two modes: **Extract** mode extracts modules\nfrom the file into the folder. You can then commit the extracted files\nto version control. **Publish** mode publishes modules from\nthe folder into the file. You should do this after merges.\n\nAfter you select a mode, a folder path, and a file path, the tool will\nlist which modules have changed, with a checkbox next to each. Tick\nthe checkbox next to each module with changes you'd like to apply.\nDouble-click an entry to run a diff tool against the old and new files.\n(This requires setting up a diff tool under **File**→**Settings**.)\nIf the underlying files change, click **Refresh**. When you're ready\nto synchronize, click **Apply** or **OK**.\n\nYou can save and load session settings from the **File** menu. Settings\nare saved as `.ini` files. If a settings file is named `VBASync.ini`\nand located in the working directory, VBA Sync will load those\nsettings automatically. I recommend taking advantage of this and\nlaunching VBA Sync from a shortcut with the working directory overridden,\nto avoid having to specify the folder and file each time you need to synchronize.\n\n![VBA Sync after selecting folder and file locations](http://i.imgur.com/GrXx2VH.png)\n\n## Command-line\nYou can also specify settings on the command-line via switches:\n\nSwitch | Meaning\n------ | ------\n`-x`   | Extract VBA from Office file (default)\n`-p`   | Publish VBA to Office file\n`-f \u003cfile\u003e` | Specify Office file\n`-d \u003cdir\u003e` | Specify version-control directory\n`-r`   | Do the selected action, then immediately exit (**required** on Linux/Mac)\n`-i`   | Ignore empty modules\n`-u`   | Search subdirectories of version-control directory\n`-a`   | Allow adding new document modules when publishing (expert option)\n`-e`   | Allow deleting document modules when publishing (expert option)\n`-h \u003chook\u003e` | If `-p` was specified earlier, set the before-publish hook. Else set the after-extract hook.\n\nAny other parameter passed to VBA Sync will be read and parsed as a session `.ini` file.\n\n## Public domain software\nCreated 2017 by Chelsea Hughes\n\nThanks to GitHub user hectorticoli for the French translation.\n\nI release all rights to this work. You may use it for any purpose, and alter\nand redistribute it freely. If you use this in another product, credit would\nbe appreciated but is not required.\n\nThis software is provided “as-is,” without any express or implied warranty.\nIn no event will I or any other contributor be held liable for any damages\narising from the use of this software.\n","funding_links":[],"categories":["C# #"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchelh%2FVBASync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchelh%2FVBASync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchelh%2FVBASync/lists"}