{"id":13942692,"url":"https://github.com/krishKM/Modern-UI-Components-for-VBA","last_synced_at":"2025-07-20T06:31:52.270Z","repository":{"id":89440293,"uuid":"131998941","full_name":"krishKM/Modern-UI-Components-for-VBA","owner":"krishKM","description":"A helper dll for VBA users to design modern UI components. No install required!","archived":false,"fork":false,"pushed_at":"2022-01-28T09:26:56.000Z","size":55272,"stargazers_count":209,"open_issues_count":26,"forks_count":41,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-11-27T12:36:52.606Z","etag":null,"topics":["access-ui","access-ui-design","contextmenu","customisation","dialog-box","dialogbox","drag-and-drop","modern-dialogbox-access","ms-access","ms-access-context-menu","ms-access-drop-down","msaccess-barcode","msaccess-vba","non-blocking","notifications","progressbar","ui-components","ui-components-for-vba","vba","vba-users"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krishKM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-05-03T13:26:42.000Z","updated_at":"2024-11-26T16:04:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"0d1aa1bf-4deb-471c-b350-35bac7f18e9b","html_url":"https://github.com/krishKM/Modern-UI-Components-for-VBA","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/krishKM/Modern-UI-Components-for-VBA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishKM%2FModern-UI-Components-for-VBA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishKM%2FModern-UI-Components-for-VBA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishKM%2FModern-UI-Components-for-VBA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishKM%2FModern-UI-Components-for-VBA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krishKM","download_url":"https://codeload.github.com/krishKM/Modern-UI-Components-for-VBA/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krishKM%2FModern-UI-Components-for-VBA/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266076350,"owners_count":23872741,"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":["access-ui","access-ui-design","contextmenu","customisation","dialog-box","dialogbox","drag-and-drop","modern-dialogbox-access","ms-access","ms-access-context-menu","ms-access-drop-down","msaccess-barcode","msaccess-vba","non-blocking","notifications","progressbar","ui-components","ui-components-for-vba","vba","vba-users"],"created_at":"2024-08-08T02:01:59.381Z","updated_at":"2025-07-20T06:31:47.251Z","avatar_url":"https://github.com/krishKM.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# A friendly helper DLL that will make you smile.\n**No installation**, **no ActiveX**, **no Admin-Rights.** \nJust add this Dll to your VBA project folder and have some cool UI features. Have only tested in MS Access but it should work in all VBA environment. Works with ACCDE too.\n\nThe main goal is to bring some .NET function to your VBA project. Make your project stand-out visually and functionally!\nSince this plugin does not require admin rights nor installation, you can distribute your app without having to worry about your client's admin policy.\n\nAnd of course with minimal code!\n\n```diff\n- NOTE:\n- If you get an error regarding unable to load find/load dlls. Please make sure you have the bin folder where your project is AND right click on vba_tools.dll =\u003e property =\u003e unblock. Do the same for all dlls in the bin folder.\n- this is an evolving project. Function names from one version to another might varry, please test your wrappers before updating to the newest one.\n\n```\n\n# Be safe\nUse following sites to check for any malware for any files you download from online.\nhttps://virusdesk.kaspersky.com/\nhttps://www.virustotal.com/\n\n![OnlineScanner](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/vbatoolsIsSafe.png)\n\n# Unblock the Dlls if necessary.\n![UnblockADllPicture](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/unblockADll1.png)\n\n## Current progress / bugfixings\n```VBA\n\t+ 27/01/2022: adding attachement from outlook on 64bit office fixed.\n\t\t\t\t: Mysql nuget packages updated.\n\t\t\t\t: WebApi prefers tls 1.2\n\t\t\t\t: Drag\u0026Drop few bugs corrected + shows number of files dropped (if closeAfterSelection=false is set.)\n\t\t\t\t: x86 and x64 are separately built and zipped in their own zip file\n\n\tprevious:\n\t+ Toast now takes json options. minor bugs fixed in dialog forms\n\t+ All functions are grouped under appropriate class names.  i.e Dll.String.AllStringRelatedFunctions\n\t- Make sure, you have update all your previous codings\n\t\n\t+ Make any Window transparent: Make either entire window as transparent or set your key colour and only make those pixels transparent.\n\t+ IsKeyDown(keyCode): returns true or false, whether a given key is pressed or not. This can be used in any event and useful to check whether CTRL or Shift key is pressed.\n\t\n\t+ object ExecuteScalar : (DatabaseType dbType, string connectionString, string sql) :Executes and SQL and returns first row first column of the result set or an empty string\n\t+ bool ExecuteNonQuery(DatabaseType dbType, string connectionString, string sql)\t:Returns true or false if the nonQuery sql command was success\n\t+ string MySqlGetAvailableServerFromList(string[] connectionString)\t\t\t\t\t:Takes array of connetionstrings and returns first reachable connectionstring. or \"\"\n\t+ bool MySqlServerIsReachable(string connectionString)\t\t\t\t\t\t\t\t:Connects to a MySql server using the connectionstring and returns true or false\n```\n\n\n## What it does?\nHelps you to make your application more user-friendly by providing some .NET components and functions that you can use within your VBA application. Visually and functionally cooler than VBA!\n\n## How to use?\nSome basic VBA skills are required! \nJust download the \u003ca href=\"https://github.com/krishKM/VBA_TOOLS/tree/master/samples\"\u003e Dll + bin folder \u003c/a\u003e from the sample folder and add them to your project folder. The ACCDB contains samples where you can copy and paste it to your VBA application.\n\n**Keep the VBA_TOOLS.Dll \u0026 Bin folder where your vba project is to enjoy all functions.**\n\n\n\n# Interesting List of features\n(Update hasn't been released with these new functions)\n\u003cul\u003e\n\t\u003cli\u003eContextMenu\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eShow Cool Context Menu\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eBarcode Control\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eCurrently supports Code39, Code128, QrCode\u003c/li\u003e\n\t\t\t\u003cli\u003eCurrently under testing\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eColour\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eHexToAccess\u003c/li\u003e\n\t\t\t\u003cli\u003eAccessToHex\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eDB Class: (Only supported MySQL)\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eExecuteScalar\t: executes a MySql select query and returns first row first column object\u003c/li\u003e\n\t\t\t\u003cli\u003eExecuteNonQuery\t: executes a MySql update/insert query and returns true or false if success.\u003c/li\u003e\n\t\t\t\u003cli\u003estring MySqlGetAvailableServerFromList(string[] connectionString)\u003c/li\u003e\n\t\t\t\t\u003cul\u003eTakes array of connetionstrings and returns first reachable connectionstring. or \"\".\u003cbr/\u003eHandy if you have multiple back-end servers and would like to know which one is reachable. Uses threads so it's fast!\u003c/ul\u003e\n\t\t\t\u003cli\u003ebool MySqlServerIsReachable(string connectionString)\u003c/li\u003e\n\t\t\t\t\u003cul\u003e:Connects to a MySql server using the connectionstring and returns true or false\u003c/ul\u003e\n\t\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eDialog Boxes\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eCool DialogBox\u003c/li\u003e\n\t\t\t\u003cli\u003eExtended Cool DialogBox\u003c/li\u003e\n\t\t\t\u003cli\u003eCool Simple DialogBox\u003c/li\u003e\n\t\t\t\u003cli\u003eSimple Are you sure?\u003c/li\u003e\n\t\t\t\u003cli\u003eDrag and Drop OpenFileDialog\n\t\t\t\u003cul\u003e\n\t\t\t\t\u003cli\u003eA simple open file dialog box that supports drag \u003c/li\u003e\n\t\t\t\u003c/ul\u003e\n\t\t\t\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eDisplay\n\t\u003cul\u003e\n\t\t\u003cli\u003eGetNumberOfMonitors\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns number of monitors \u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003e\n\t\u003cul\u003e\n\t\t\u003cli\u003eGetPrimaryMonitorHandle\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns handle to primary monitor\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eGetPrimaryMonitorBounds\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eGet information about the primary monitor\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eGetMonitorBoundsByHandle\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns monitor information from a window handle.\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eGetCursorPosition\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eForm\n\t\u003cul\u003e\n\t\t\u003cli\u003eMake Transparent Window\u003c/li\u003e\n\t\t\u003cli\u003eChange Access background colour\u003c/li\u003e\n\t\t\u003cli\u003eDrage Me\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eAllows to move a borderless form\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eFTP\n\t\u003cul\u003e\n\t\t\u003cli\u003eFTPS_UPLOAD\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003euploads file to given ftp server\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eFTPDeleteFile\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003edeletes a file from given ftp location\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eFTPFileExists\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eChecks if a given file exists in given ftp location\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003e\u003c/li\u003e\n\t\u003cli\u003e\u003c/li\u003e\n\t\u003cli\u003eGraphics\n\t\u003cul\u003e\n\t\t\u003cli\u003eLoad Picture from URL to ImageControl without saving\u003c/li\u003e\n\t\t\u003cli\u003eLoad web urls\u003c/li\u003e\n\t\t\u003cli\u003eLoad local pictures\u003c/li\u003e\n\t\t\u003cli\u003eConvert blob fields to pictures\u003c/li\u003e\n\t\t\u003cli\u003eMeasureText\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eCalculates height and width in pixels for a given text\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eByteToImage\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eConverts ByteArray to an Image and saves in a provided location.\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eByteToBitmap\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eConverts Byte Array to a bitmap\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eTakeScreenShotFromHwnd\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eTakes a screenshot of a window by provided handle. Returns byte array \u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eTakeScreenShot\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eTake screenshot of entire desktop. Returns byte array\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eTakeScreenShot1\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eTakes screenshot and saves in a given path\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003ePictureFromUrl\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eLoads picture from an url and returns byte array\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eSaveClipboardToImage\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eSaves clipboard picture to a given path and format\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eInputBoxes\n\t\u003cul\u003e\n\t\t\u003cli\u003eShow Cool InputBox\u003c/li\u003e\n\t\t\u003cli\u003eEmail with validation\u003c/li\u003e\n\t\t\u003cli\u003ePassword\u003c/li\u003e\n\t\t\u003cli\u003eMultiline / single line\u003c/li\u003e\n\t\t\u003cli\u003eNumber only\u003c/li\u003e\n\t\t\u003cli\u003eDates with validation\u003c/li\u003e\n\t\t\u003cli\u003eShow DropDown box\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eJSON\n\t\u003cul\u003e\n\t\t\u003cli\u003eUses Newtonsoft.Json\u003c/li\u003e\n\t\t\u003cli\u003eExportToJSON\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eAllows MS Access users you to export queries, tables SQL results as JSON string\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eImportJSON\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eAllows MS Access users to import records to table using JSON string arrays\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONString\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eString expression of a Newtonsoft.Json object\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONGetObject\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eretireve Json object by property name\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONSetObject\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eAdds a property to Json object\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONGetValue\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eRetrieves a value from json object\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONToObject\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eConverts string json to a dynamic object\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eJSONSerialize\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns string expression of a dynamic json object\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eNetClass\n\t\u003cul\u003e\n\t\t\u003cli\u003eUrlIsReachable\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns true or false whether the url is reachable\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eUrlIsValid\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eReturns true or false whether the url is well formatted\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eUrlIsLocalPath\n\t\t\u003cul\u003e\n\t\t\t\u003cli\u003eIs the given url a local file path?\u003c/li\u003e\n\t\t\u003c/ul\u003e\n\t\t\u003c/li\u003e\n\t\t\u003cli\u003eGetExternalIP\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eNotification\n\t\u003cul\u003e\n\t\t\u003cli\u003eShow Non-Blocking Notifications\u003c/li\u003e\n\t\t\u003cli\u003eShow Success\u003c/li\u003e\n\t\t\u003cli\u003eShow Warnings\u003c/li\u003e\n\t\t\u003cli\u003eShow Error\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eProgressBar\n\t\u003cul\u003e\n\t\t\u003cli\u003eShow Cool ProgressBar\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eRegEx\n\t\u003cul\u003e\n\t\t\u003cli\u003eIsMatch\u003c/li\u003e\n\t\t\u003cli\u003eGetFirstMatch\u003c/li\u003e\n\t\t\u003cli\u003eReplace\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003eString\n\t\u003cul\u003e\n\t\t\u003cli\u003ePadLeft\u003c/li\u003e\n\t\t\u003cli\u003ePadRight\u003c/li\u003e\n\t\t\u003cli\u003eTrimEnd\u003c/li\u003e\n\t\t\u003cli\u003eTrimStart\u003c/li\u003e\n\t\t\u003cli\u003eStartsWith\u003c/li\u003e\n\t\t\u003cli\u003eEndsWith\u003c/li\u003e\n\t\t\u003cli\u003e.NET string.format\u003c/li\u003e\n\t\u003c/ul\u003e\n\t\u003c/li\u003e\n\t\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\n### [Show non-blocking notifications]\nInspired from Toastr (https://github.com/CodeSeven/toastr).\nAllowing VBA users to show simple notifications without having to wait or stress their VBA application.\nWith a simple command a little colourful notification pops up with a message without taking any focus or disturbing the user.\nI mainly use it to show messages that do not require action. I.e. A mail has arrived or a task has been completed.\n\n![just a notification](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/information.png)\n\n## customise your notification like you want:\nfollowing customisations are possible now.\n```\n1.Message   : can contain \u003ca href=\"\"\u003etext\u003c/a\u003e for hyperlinks (any other html tags are ignored, hyperlink must begin with www or http or https (basically well formatted links only?)\n```diff\n+ It is now possible to open local files. hyperlinks must be a local file format. I.e. \u003ca href=\"F:\\folderName\\picture.png\"\u003e\n+ Testing: A call back command (Docmd.OpenForm only) can be embedded into the hyperlink\n```\n2.Duration in Milli-Seconds (default 2000. 0 will keep the notification for long time.  int.max)\n3.Background colour (html colour code)\n4.Font colour (html colour code)\n5.X,Y position on the desktop\n```\n\n\n\n![picture of 3 notifications](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-collections.png)\n```VBA\n'used commands\nToastr.Toast \"Ups something went wrong!\",vberror,0\nToastr.Toast \"Yellow weather warning!\",vbexclamation,0\nToastr.Toast \"You've just received a notification\",vbinformation,0\n```\n\nin Action\n![Notification in action gif](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/InAction.gif)\n![Notification in action gif](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/InAction1.gif)\n\n## how about little interaction with user and show some hyperlinks?\nYou can have html ```\u003ca href=\"\"\u003etext\u003c/a\u003e``` tags in your message which will be translated into hyperlinks.\n![Notification in action gif](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/Hyperlink.png)\n\nLocal files as hyperlinks: ```\u003ca href=\"F:\\folderName\\picture.png\"\u003eViewThisImage\u003c/a\u003e```\n\nCallback command:\n1. OpenForm hyperlink: ```\u003ca href=\"DoCmd.OpenForm frmImageView,acNormal,,wherecondition:=id=2\"\u003eOpenForm\u003c/a\u003e```\n```VBA\n\tNote: the docmd command does not contains any \" or '\n\tFilter, WhereCondition, DataMode, WindowMode must be named parameters. I.e. Filter:=FilterCondition or WhereCondition:=id=2\n\t\n\t'Similarly you may also pass a function name which will be executed to the host application\n\t\u003ca href=\"ExecuteMe()\"\u003e Execute a function in the host application \u003c/a\u003e\n\t\n\t\n\t\t\n\t[Toast Notifications]\n\t1. Toast notification parsing hyperlink function corrected\n\t2. Toast can now open Docmd.OpenForm\n\t3. Toast can now execute local functions. I.e. \u003ca href=\"ExecuteMe()\"\u003e Execute a function in the host application \u003c/a\u003e will execute \"ExecuteMe()\" when clicked the link.\n\t4. Toast / Simple Dialogboxes can now execute local functions with parameters i.e. \u003ca href=\"ExecuteMe('ParameterA','ParameterB')\"\u003e ExecuteMe \u003c/a\u003e\n\t4. Toast / Simple  Dialogboxes can now close itself after clicking a hyperlink. Use closeme=\"true\" attribute. i.e. \u003ca href=\"ExecuteMe('ParameterA','ParameterB')\" closeme=\"true\"\u003e Execute and close Me \u003c/a\u003e\n\t\n\t\n```\n\n\n\n## Download \nDownload the sample and test it in your project. Please leave comment how you feel.\n\u003ca href=\"https://github.com/krishKM/VBA_TOOLS/tree/master/samples\"\u003e Samples\u003c/a\u003e\n\n\n\u003chr\u003e\n\u003chr\u003e\n\n# Show Cool DialogBox\nStandard Message boxes are great but sometimes you want little more than standard features.\nI.e\n\u003cul\u003e\n  \u003cli\u003eBe able to have some colours\u003c/li\u003e\n  \u003cli\u003eBe able to have more than 3 buttons\u003c/li\u003e\n  \u003cli\u003eBe able auto-close\u003c/li\u003e\n  \u003cli\u003eBe able to use HTML tags \u003c/li\u003e\n  \u003cli\u003enot stressing your vba app with a loop?\u003c/li\u003e\n\u003c/ul\u003e\nMeet the new simplified DialogBox for VBA users. This dialogbox will allow above listed features and should help you to keep your application colourful. :) This feature is still under development and could some feedback from testers.\n\n\n\n\n\n\n\n\n\n\n\n\u003cHR\u003e\n\n![Cool DialogBox](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-DialogboxGreen.png)\n![Cool DialogBox1](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-DIALOG-BOX.png)\n\nThere is vba wrapper in the sample accdb which can be extended as per your need. It uses the 3rd party JSON Converter plugin with some miner fixes from my side.\n\n```\n  'usign the wrapper it would be as simple as \n  Debug.Print gDll.DialogRich(\"This is a title\", \"Some content\", (vbExclamation + vbYesNo))\n```\n\na simplified version is also avilable (without HTML rendering)\n# Cool Simple MessageBox\n![Cool DialogBox](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-CoolSimpleMessageBox.png)\n\nAllows one to show simple message box\n\n\n# Show cool Progressbar\nProgressbars \n\ncrucial element when informing users about a progress. Meet the cool progressbar which can pop up on top of your application at any time with a simple code as such as.\n\n```\n  Dim ProgressBarID As Long\n  ProgressBarID = gDll.ShowProgressBar(100, \"Executing your query\", \"Please wait. We are preparing printer drivers\")\n    \n  ProgressBarID = gDll.SetProgressBar(ProgressBarID, 10, \"Waiting for driver..\")\n  \n  gdll.CloseProgressbar ProgressbarId 'Will close the progressbar\n```\n![Cool ProgressbarGreen](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-ProgressBar.png)\n\nAs usual, you are allowed to change theme colours as per your taste.\n![Cool ProgressbarRed](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-ProgressBarRed.png)\n\n### note:\n```ShowProgressBar and SetProgressBar``` returns an ID which you can refer your progressbar to. This also allows VBA users to have multiple progressbars at the same time. \n\n# Show Cool InputBoxes\nInputBox another heavily used component. Some like the plain system looking InputBox but we love the modern UI colours :)\nWhat would you chose from these tables?\n\n![InputBoxCollection](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/InputBoxDefault.png)  ![InputBoxCollection](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-InputBoxMultiline.png) \n\n## Nice colours! but what's the point?\nThe new InputBoxes comes with some inbuilt functions and can be configured accordingly.\nFollowing types are supported now.\n```\n'        Password        = 1, : Masked using systempassword mask\n'        Text            = 2, : Single line text:\n'        MultilineText   = 32, : Multi line text box\n'        Number          = 4, : Numbers only\n'        ShortDate       = 8, : Masked dd/mm/yyyy. Dates are validated upon exit\n'        LongDate        = 16,  : masked using dd/Month/yyyy\n'        DateTime        = 48,  : masked using dd/mm/yyyy hh:mm:ss\n\nand following parameters are accepted: \n  Except Type, all others are optional\n  \n  InputBoxType Type,    : number\n  string Title,         : Tile for the input box\n  string Message,       : optional text for the input box\n  int PosX,             : x coordinate relative to the screen to positon this box to\n  int PosY,             : y coordinate relative to the screen to position this box to\n  string ThemeBg,       : html colour code\n  string ThemeForeColour: html colour code\n\n' With the dll in place, use it as\n\n  result = gDll.DLL.showinputbox(Type:=32, Title:=\"\", Message:=\"Tell us what happened on that day!\", ThemeBg:=\"\", ThemeForeColour:=\"\")\n```\n#### check out the getCursorPosition function which returns x,y position of the cursor!\n\n\nin action:\n\n![InputBoxCollection](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/InputBox.png)\n\nas always we can change theme colours:)\n\n![purple input box](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-InputBoxPurple.png)\n\nDownload \u003ca href=\"https://github.com/krishKM/VBA_TOOLS/tree/master/samples\"\u003e sample\u003c/a\u003e\n\n# [Show DropDown Box]\nRequested from a VBA_TOOLS user. Like other user inputboxes, you can now let your user to select from a cool dropdown box.\n![purple input box](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/DropDownBox.png)\n\nWhen we decided to make a cool dropdown box, we thought about reasons for not using existing Ms Access DropDown box.\nI personally think, showing icons in a dropdown box would be an amazing idea! :) In addition, standard DropDownBox does not allow one to search partially within the content. That is, being able to search any part of the dropdown selection.\nLike traditional DropDown, we want to show a list of existing query or table.\nSo we decided to cover those points at the moment. Surely, going forward we are planing to add following functions.\n\n1. Grouped entries: DropDown entries will be grouped with a group header.\n2. Having multiple image column?\n3. Change the DropDown style completely: Maybe like a menu with sub menus..\n4. Fix any errors\n\n\nHere is how to use it:\n```VBA\n ?gDll.ShowDropDown(\"Select an item\", \"Some inner message?\", \"qryDropDown\", 2, Array(50, 50))\n \n \n Param list:\n /// \u003csummary\u003e\n  /// Shows a Dialogbox with a dropdown for selection. Returns a string value\n  /// \u003c/summary\u003e\n  /// \u003cparam name=\"title\"\u003eTitle for the inputbox\u003c/param\u003e\n  /// \u003cparam name=\"message\"\u003eInner message for the input box\u003c/param\u003e\n  /// \u003cparam name=\"dbSource\"\u003eDatabase path\u003c/param\u003e\n  /// \u003cparam name=\"tableSource\"\u003eTable name or SQL. If SQL is used, use isRawSql=true\u003c/param\u003e\n  /// \u003cparam name=\"boundColumn\"\u003eColumn Index to get the value from\u003c/param\u003e\n  /// \u003cparam name=\"columnWidths\"\u003ean Array of integers\u003c/param\u003e\n  /// \u003cparam name=\"isRawSql\"\u003eSpecifies whether the tablesource is a plain SQL command \u003c/param\u003e\n  /// \u003cparam name=\"posX\"\u003e\u003c/param\u003e\n  /// \u003cparam name=\"posY\"\u003e\u003c/param\u003e\n  /// \u003cparam name=\"themeColour\"\u003e\u003c/param\u003e\n  /// \u003cparam name=\"themeForeColour\"\u003e\u003c/param\u003e\n  /// \u003creturns\u003eString value\u003c/returns\u003e\n```\n\n\n### Note:\nIf your datasource contains \"icon\" as the first column and it is a hyperlink (web or local file), by default those links will be converted to image.\nUsse Array(column0_width, column1_width ...) to set up the column widths\n\n\n\u003chr\u003e\n\n# Drag and drop OpenFileDialog\nWHAT!! Drag and drop function for vba??? Yes you've read it correct but don't get too excited though:) It's just a file-drop function. Allowing users to select/open/get files using drag and drop method. Direct alternative to an existing FileOpenDialog method. \n\u003chr\u003e\n  \n### returns a string of JSON Array with all selected files. (if you wish to have string array see below)\nWhat you do with those file paths is up to you. Maybe at some point later, we might link this with our existing FTP component.\n\n\nCurrently following parameters are accepted:\n\n```c#\n  All of below are optional.\n  \n  string Message,         : A message for the dialog box.\n  bool AllowMulti,        : Should it allow multiple files?\n  string[] Filters,       : An array of string =\u003e (Description |*.png). Used for file extention filters\n  int PosX,               : X Position relative to the monitor where this box should appear\n  int PosY,               : Y position relative to your monitor where this box should appear\n  string ThemeBg,         : HtmlColourCode\n  string ThemeForeColour  : HtmlColourCode\n```\n(Assuming the Dll part is already done:) Use in VBA like this:\nor just download the sample file and look what functions you would copy to your application.\n\n```\n    Dim FilePaths As String\n    FilePaths = gDll.DLL.ShowDialogForFile(\"No multiple files allowed\", False)\n```\n\nor customised one:\n```VBA\n    Dim Filters(2) As String\n    \n    Filters(0) = \"Png Pictures only |*.png\"\n    Filters(1) = \"All files |*.*\"\n    \n    Dim FilePaths As String\n    FilePaths = gDll.DLL.ShowDialogForFile(Message:=\"Feel free to drop many files\", allowmulti:=False, Filters:=Filters, PosX:=0, PosY:=0, ThemeBg:=\"\", ThemeForeColour:=\"\")\n    \n```\nIf you wish to have a string array result\n```\n    dim Files() as string\n    Files = gDll.ShowDialogForFileArray(Message:=\"Feel free to drop many files\", allowmulti:=False, Filters:=Filters, PosX:=0, PosY:=0, ThemeBg:=\"\", ThemeForeColour:=\"\")\n    'Will return a string array of selected files\n```\n\nView in action:\n![File drag and drop gif](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/FileDropInAction.gif)\n\nErrors\n![File drag and drop error gif](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/VBA-RICH-UI-DRAG-DROP.gif)\n\u003chr\u003e\n\n\n\n\n\n\n# Load Picture from URL to ImageControl without saving\nOh wow! how many people wished this was possible out-of-the-box? Many of us spent good amount of time searching for good tutorials and most the results are simple wayarounds than solutions. Pages after pages of codes with APIs and classes or use web-browser control, buy third-party image control or download the picture and load again.\n\nNo offence to the web-browser control. It is great for what it is but surely not designed for showing images(IMHO). Functions like, zooming, streching aren't available via web-browser control. Of course you can use HTML tags but that would be a \"way around\" to another \"way around\" problem. isn't it?\n\nDon't want to buy third party controls because they need to be installed! (no-go for many)\nDon't want to download and load either. Too much footprint/mess to clean up with.\n\nLet's meet our simple one liner which can load images into an Image control. No download, no too much code, no nonsense\n\n```VBA\n  'Dll function\n  'PictureFromUrl(\n    string URL,             :  Image url. web url or local path\n    bool ShowError = false, : Show error notification when url cannot be loaded\n    long sender = 0         : Sender HWND, not used now.\n    )\n  \n  'VBA Wrapper (used for simplicity)\n  'ImageControlGetImage(ImagePath as string, optional ShowError=true)\n  \n  \n'Loading web url\nPrivate Sub Command147_Click()\n    Dim WebPicture As String\n    WebPicture = \"https://avatars2.githubusercontent.com/u/1001697?s=460\u0026v=4\"\n    \n    Me.Image113.PictureData = gDll.ImageControlGetImage(WebPicture, ShowError:=True)\nEnd Sub\n\n'Same function used to load local file path\nPrivate Sub Command149_Click()\n    Dim WebPicture As String\n    WebPicture = \"F:\\Projects\\VBA_DLL\\dialogboxgreen.png\"\n    \n    Me.Image113.PictureData = gDll.ImageControlGetImage(WebPicture, ShowError:=True)\n    \nEnd Sub\n\n```\nSee it in action:\n![Image from web url](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/ImageControlInAction.gif)\n\n### If you would like to read urls from your table\ninstead using the `control source` property, use the `on current` event in your form to load the pictures.\n```VBA\nPrivate Sub Form_Current()\n  'Load pictures \n    Me.Image8.PictureData = gDll.ImageControlGetImage([url], True)\nEnd Sub\n```\nEnjoy and let us know what you think!.\n\n\n# Barcode Control for vba\nAnother request from Vba_tools user to be able to show barcodes. I have no idea about barcodes but found a great source in google (https://sourceforge.net/projects/zintnet/). Thanks for the zintnet owner.\nI've adapted few classes and added to our VBA_TOOLS plugin.\n\nUnlike other components barcode-control will be embedded into forms and reports so the control cannot be a standalone form so when printing reports or invoices the barcode is visible. To achieve this, we create a barcode in .NET environment and pass the barcode back to Access as an Image. This way an Image control on a form or report can show barcodes.\n\nAgain this is beta version. Have a look and inform us about your thoughts.\n\nHow to use it?\n\n```VBA\n  Me.imgBarcode.PictureData = gDll.CreateBarcode(Val(Me.BrcodeType.value), Me.txtBarcodeData.value, Val(BarcodeSizeMultiplier.value))\n  \n  Parameter list:\n  '    /// \u003csummary\u003e\n'    ///\n'    /// \u003c/summary\u003e\n'    /// \u003cparam name=\"symbology\"\u003eType of the barcode\u003c/param\u003e\n'    /// \u003cparam name=\"barcodeData\"\u003eData value for barcode\u003c/param\u003e\n'    /// \u003cparam name=\"width\"\u003eWidth of the graphics / Image\u003c/param\u003e\n'    /// \u003cparam name=\"height\"\u003eheight of the grapics/ Image\u003c/param\u003e\n'    /// \u003cparam name=\"multiplier\"\u003eMultiply the size by this value.\u003c/param\u003e\n'    /// \u003creturns\u003ePicture Data\u003c/returns\u003e\n'    CreateBarcode(Symbology symbology, string barcodeData, int width, int height, float multiplier )\n\n```\n![qrBarcode.png](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/qrBarcode.png)\n![Code39Barcode.png](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/Code39barcode.png)\n\n# Cool Context Menu for vba\n[Under testing]: testers needed. This function is currently not wrapped. Means more parameters will be added once ready for publish\n\nWhat can I say? Probably most vba users wished this control existed out of the box. Similar to right click context menu, we developed a left mouse clickable context menu.\nOf course styleable, moveable and iconed menu items.\n\nEnough said. lets see in action.\n![ContextMenuPicture](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/VBA-RICH-UI-CoolContextMenu.gif)\n\nSince we've got your attention now, let's see how this control works. There are two version\n1\u003eSimple: Just takes an array of strings as menu items and returns the menu item text as the selected value.\n2\u003e Extended: Extended menu can show icons as well as take a dataValue for each menu item. That being said, each menu item is constructed as an array(string:IconPath, string:DataReturnValue, string:MenuItem) ie. array(\"c:\\email.png\",\"1\",\"Send Email\")\nadd each menu entry within another array to use the extended menu. i.e. Array(array(\"c:\\email.png\",\"1\",\"Send Email\"), array(\"c:\\door.png\",\"2\",\"Exit\"), array(\"http://someweblink.png\",\"3\",\"Some menu item with web icon\") )\n\nin code that would be:\n```VBA\n\t'Simple Menu\n\t'Create an array of menu items\n    Dim MenuItems() As String\n\tDim result As String\n\n    MenuItems = VBA.Split(\"Do Something,I'm so cool, Send Email, Print, Settings, Save, Save As, Make Pdf\", \",\")\n    FnArrayAddItem MenuItems, \"Exit\"\n    FnArrayAddItem MenuItems, \"Exit Application\"\n    \n    result = gDll.DLL.ShowContextMenu(MenuItems)\n\tgDll.Toast result, , , Me.hwnd\n    If (result = \"Exit\") Then\n        DoCmd.Close acForm, Me.Name, acSaveYes\n    ElseIf (result = \"Exit Application\") Then\n        Application.Quit\n    End If\n\t\n```\n\n```VBA\n\t'Extended menu with icons\n\tDim result As String\n    result = (gDll.DLL.ShowContextMenuA(Array(Array(\"\", \"0\", \"Web loading takes time\"), Array(\"F:\\PROJECT_SUPPORT\\Images\\csharp.png\", \"1\", \".NET is cool\"), Array(\"https://static.thinkster.io/topics/node_icon.png\", \"2\", \"Loading icon from web\"), Array(\"glyphicons-389-exit\", \"3\", \"Exit\"))))\n    \n    \n    gDll.Toast result, vbInformation\n    \n    If (Val(result)) = 3 Then\n        DoCmd.Close acForm, Me.Name, acSaveYes\n\t\t\n```\n\n\n\n\n\n\n\u003chr\u003e\n\u003chr\u003e\n\n\n\n# Other Features that are interesting\n\n# DragMe\nA simple function that allows one to drag a borderless form.\nhave a look here. \n![DragME](https://github.com/krishKM/VBA_TOOLS/blob/master/screenshots/VBA-RICH-UI-DragMe.gif)\n\nHow to use?\n```VBA\n\t'simply use the mouseDown event\n\t\n\tPrivate Sub Label251_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)\n\t\tCall gDll.DLL.DragMe(Me.hwnd)\n\tEnd Sub\n\n```\n\n### AreYouSure?\na simple yes no popup returns true or false. Sometims you just want to confirm the user for yes or no action.\nThis might be a silly but cool yes no box:) \n```VBA\n? gDll.AreYouSure\n\n```\nIt is also possible to colour theme the AreYouSureBox by providing Hex Colour code or if you are using bootstrap class\n```VBA\n? gDll.AreYouSureE(Me, \"#aa66cc\", \"#000000\", \"#aa66cc\", \"#F65656\") or \n?gDll.AreYouSureE(, gBootstrap.default_color_dark, gBootstrap.WHITE, gBootstrap.AMBER, gBootstrap.TEAL_LIGHTEN_3)\n```\n![AreYouSureCollection](https://raw.githubusercontent.com/krishKM/VBA_TOOLS/master/screenshots/VBA-RICH-UI-AreYouSureCollection.png)\n\n### Download a file and show progressbar for vba\nAnother cool feature. This function allows you to download a file from the internet and shows the download progress using above cool progressbar.\n\n```DownloadedFile = DLL.DownloadAFile(Url, [Destination], [OverWrite = true], [ShowProgress = true])```\nExcept the Url, all other parameters are optional. If destination is not provided. File will be saved in application.path\n\n### Save Clipboard images to local file\nSometimes, simple things can be very dificult in VBA. If you are after saving clipboard image to a local path. Check this function.\n\n``` SaveClipboardToImage(string PathToSave, string FileName, string ImageType) ``` All parameters are optional and by default Jpeg image type is used. If the clipbord object contains any images, it will be saved wherever you want and the file path is returned.\nin the sample accdb, there is a wrapper ```SaveClipboardToImage``` check it out.\n\n### PadLeft and PadRight\nUses .NET padleft and padRight function.\n``` gdll.DLL.PadLeft(\"1\",10,\"0\") =\u003e 0000000001\n    ?gdll.DLL.PadRight(\"1\",10,\"0\") = \u003e 1000000000\n```     \n### check out the getCursorPosition function which returns x,y position of the cursor!\n\n### [Receive SignalR Messages]\nThis works for me because I do have own signalR server but generally is under development or say not ready yet!\nIt's like google push messages or any other push message service. You can send notification to all of your logged in yours from one place.\nExpanding this, you could also use as a chat server where all logged in participants could send and receive messages among them.\nAgain without stressing VBA apps.\n\n\n### ByteToImage\nByteToImage(byte[] byteArraym string TemporaryPath, bool useCache) is a function for MS Access users. Basically you can convert a byteARray received from database into a pictures.\nWill return the path of the image file. Use the path as image location for your image property.\nsomething like Me.Image32.Picture = gDll.ByteToImage(ByteArray, \"SaveLocationPath\")\n\n### FTP(S) UPLOAD\nsimple tool which uses WinScp to upload files securely to your host. Handy if you want to upload some files without doing too much VBA or having activeX components.\n```VBA\n\t'Simply use as \n\tDebug.Print gDll.FTPUploadFile(ServerName, port, Username, Password, \"F:\\Projects\\VBA_DLL\\Modern Inputbox for vba purple.png\", \"/screenshots/\", SSHFingerprintOfTheRemoteServer, Ftp, Explicit, False)\n\t\n\tParameter list\n```\n```C#\n\t\t/// \u003csummary\u003e\n        /// Uoloads a file to the given ftp server\n        /// \u003c/summary\u003e\n        /// \u003cparam name=\"host\"\u003eHost server\u003c/param\u003e\n        /// \u003cparam name=\"port\"\u003ePort number\u003c/param\u003e\n        /// \u003cparam name=\"username\"\u003eFTP UserName\u003c/param\u003e\n        /// \u003cparam name=\"password\"\u003eFTP password\u003c/param\u003e\n        /// \u003cparam name=\"localFileName\"\u003ePath to local file\u003c/param\u003e\n        /// \u003cparam name=\"remoteLocation\"\u003eLocation in remote server\u003c/param\u003e\n        /// \u003cparam name=\"hostCertificateFingerprint\"\u003eRemote Server FingerPrint\u003c/param\u003e\n        /// \u003cparam name=\"protocol\"\u003eFtp Protocol, ftp, sftp...\u003c/param\u003e\n        /// \u003cparam name=\"ftpSecure\"\u003eType of connection, implicit, explicit\u003c/param\u003e\n        /// \u003cparam name=\"giveUpSecurityAndAcceptAnyTlsHostCertificate\"\u003edebug use only\u003c/param\u003e\n        /// \u003creturns\u003estring representation of true or false or error message\u003c/returns\u003e\n````\n\n### FTP Delete Remote File\nSimply delete a file from your remote server. Returns true or false + error message as string.\n```VBA\n  'Server as string\n  'Port as number\n  'Username as string\n  'Password as string\n  'RemoteFile as string\n  'SSHFingerprint as string\n? DLL.FTPDeleteFile(ServerName, Port, Username, Password, RemoteFile, TLSHostFingerprint)\n```\n\n### ImportJSON\nSomewhere similar to Application.ImportXML, you can create access tables from JSON array strings.\nI haven't done extensive test but works for my needs.\n\nSimply call\n```VBA\n  gdll.ImportJSON(YourJSonArrayString, \"Target Table name\", ImportOptions[append,structureOnly,structureAndData], recreate)\n 'Recreate will delete and recreate the table. If ApendOnly requested, recreate is ineffective\n \n 'Here is a sample working command. Which will create a new table called tblJsonTest and import all the content from the array.\n gdll.ImportJson(\"[{\"\"id\"\":10,\"\"name\"\":\"\"User\"\",\"\"add\"\":false,\"\"edit\"\":true,\"\"authorize\"\":true,\"\"view\"\":true},    {\"\"id\"\":11,\"\"name\"\":\"\"Group\"\",\"\"add\"\":true,\"\"edit\"\":false,\"\"authorize\"\":false,\"\"view\"\":true},    {\"\"id\"\":12,\"\"name\"\":\"\"Permission\"\",\"\"add\"\":true,\"\"edit\"\":true,\"\"authorize\"\":true,\"\"view\"\":true}]\",\"tblJsonTest\",acStructureAndData,True)\n  '\n```\n\n### ExportToJson\nIt is now possible to export table contents as JSON string. \nMethod1:\n```VBA\n  'Eecute the SQL SELECT command and saves the result set as JSON formatted string.\n  gdll.ExportToJSON(\"select * from tbljsontest where authorize = true;\",\"MyJson.Txt\",overwrite:=false,isRawSql:=true)\n```\n\nMethod2:\n```VBA\n  'Export everything from the table/query\n  gdll.ExportToJSON(\"tbljsontest \",SaveAs:= \"MyJson.Txt\",overwrite:=false,isRawSql:=false)\n```\nIn this method, we have passed a table name/query name to the export function and set isRawSql = false. The export function will then generate SQL statement similar to “SELECT * FROM givenTableName/QueryName;” and perform the JSON Export.\n\nIf the SaveAs (target file name) is empty, no file will be exported but the conversion will still happen and converted string will be returned as result.\n\nDownload the sample project and have a play.\n\n\n# [Upcoming functions]\nmany... :) \nif you want a specific function email or leave a comment :)\n\n# Can't wait? Just download! and enjoy\n\u003ca href=\"https://github.com/krishKM/VBA_TOOLS/tree/master/samples\"\u003e sample\u003c/a\u003e\n\n# [Copyrights, Licence, Credits]\n\nCopyright © 2018 Krish\n\nYou are free to use the dll for non-commercial purposes. Commercial users, you can use the dll with one condition, please let us know who you are. We are very happy to have your/company name in out clients list.\n\nWould appreciate your credits and links to my GitHub page.\n\n\n\n\n\u003chr\u003e\n\u003chr\u003e\n\u003chr\u003e\n# Raw methods from class\n\u003chr\u003e\n\u003chr\u003e\n\n```C#\n/// \u003csummary\u003e\n/// Shows toasts on the desktop\n/// \u003c/summary\u003e\npublic async void FN_SHOW_TOAST(string iMessage, int iDuration, string iBG_COLOR, long iANIME_DURATION, string iFONT_COLOR, int iX, int iY, int iANIM_DIRECTION, bool iAUTO_CLOSE = true)\n{\n}\n \n \n\n/// \u003csummary\u003e\n/// Converts ByteArray to an Image and saves in a provided location.\n/// \u003c/summary\u003e\n/// \u003creturns\u003eThe path of the image saved locally\u003c/returns\u003e\npublic string ByteToImage(byte[] byteArrayIn, string iTempPath, bool useCache)\n{\n}\n \n/// \u003csummary\u003e\n/// Converts Byte Array to a bitmap\n/// \u003c/summary\u003e\npublic Bitmap ByteToBitmap(byte[] byteArr)\n{\n}\n \n/// \u003csummary\u003e\n/// Returns a ByteArray of the image\n/// \u003c/summary\u003e\n/// \u003cparam name=\"hWND\"\u003e\u003c/param\u003e\npublic byte[] TakeScreenShotFromHwnd(long hWND)\n{\n}\n \n/// \u003csummary\u003e\n/// Take screen-shot of entire desktop. Returns byteArray\n/// \u003c/summary\u003e\npublic byte[] TakeScreenShot()\n{\n}\n \n/// \u003csummary\u003e\n/// Take screen-shot of entire desktop. Saves in a location and returns the location\n/// \u003c/summary\u003e\npublic string TakeScreenShot1(string SavePath)\n{\n}\n \n/// \u003csummary\u003e\n/// Returns ByteArray containing the picture received from the url\n/// \u003c/summary\u003e\n/// \u003cparam name=\"URL\"\u003e\u003c/param\u003e\npublic byte[] PictureFromUrl(string URL, bool ShowError = false, long sender = 0)\n{\n}\n/// \u003csummary\u003e\n/// uses winScp. securely uploads files to the given host\n/// \u003c/summary\u003e\npublic string FTPS_UPLOAD(string iHost, int iPort, string iUsername, string iPassword, string iLocalFileName, string iRemoteLocation, string iHostCertificateFingerprint = \"\")\n{\n}\n \n/// \u003csummary\u003e\n/// Returns a formated string using C# string.format()\n/// \u003c/summary\u003e\npublic string FN_STRING_FORMAT(string iString, params object[] iParams)\n{\n}\n \n \npublic string FN_SERIALIZE(dynamic iObject)\n{\n}\n \n/// \u003csummary\u003e\n/// Returns Cursor position Relative to the screen\n/// \u003c/summary\u003e\npublic string getCursorPosition()\n{\n}\n \n/// \u003csummary\u003e\n/// Shows a dialog-form for parent window.. non customizable\n/// \u003c/summary\u003e\n/// \u003cparam name=\"iHWND\"\u003e\u003c/param\u003e\npublic int AreYouSure(int iHWND)\n{\n}\n \n/// \u003csummary\u003e\n/// Shows confirm dialog, customizable\n/// \u003c/summary\u003e\npublic int ShowDialog(string caption, string message, string buttonTextForYes, string buttonTextForNo)\n{\n}\n \n/// \u003csummary\u003e\n/// Shows confirm dialog, customizable\n/// \u003c/summary\u003e\npublic int ShowDialogRich(string caption, string message, string buttonTextForYes, string buttonTextForNo)\n{\n}\n \n/// \u003csummary\u003e\n/// Shows rich dialog form using JSON configuration\n/// \u003c/summary\u003e\npublic int ShowDialogJSON(string JSONConfig)\n{\n}\n \n/// \u003csummary\u003e\n/// Shows Input-box form\n/// \u003c/summary\u003e\npublic string ShowInputBox(InputBoxType Type = InputBoxType.Text, string Title = \"\", string Message = \"\", int PosX=0, int PosY=0, string ThemeBg = \"\", string ThemeForeColour = \"\")\n{\n}\n \n/// \u003csummary\u003e\n/// Shows progressbar\n/// \u003c/summary\u003e\npublic long OpenProgressBar(string Title, string Message, int Total, bool AutoClose, string ThemeBg, string TitleForeColour)\n{\n}\n \n/// \u003csummary\u003e\n/// Sets value for an existing progressbar or show error\n/// \u003c/summary\u003e\npublic long SetProgressBar(long Handle, int CurrentValue, string Message, int NewMaxValue, bool AutoClose = false)\n{\n}\n \n/// \u003csummary\u003e\n/// Closes an already open progressbar.\n/// \u003c/summary\u003e\n/// \u003cparam name=\"Handle\"\u003e\u003c/param\u003e\npublic void CloseProgressBar(long Handle)\n{\n}\n \n/// \u003csummary\u003e\n/// If clipboard contains an Image, save in temp location and return the file path\n/// \u003c/summary\u003e\npublic string SaveClipboardToImage(string path, string FileName, string ImageType)\n{\n}\n \n/// \u003csummary\u003e\n/// Download a file from web and save it to local path. Returns saved file path\n/// \u003c/summary\u003e\npublic string DownloadAFile(string url, string destination, bool overWrite, bool ShowProgress)\n{\n}\n \n \n\npublic string PadLeft(string Input, int Length, string PaddingChar=\"\")\n{\n}\n\npublic string PadRight(string Input, int Length, string PaddingChar=\"\")\n{\n}\n \n \n/// \u003csummary\u003e\n/// De-Serializes a JSON string to a dynamic type. Returns the dynamic object\n/// \u003c/summary\u003e\npublic object JSONToObject(string json)\n{\n}\n \n/// \u003csummary\u003e\n/// Reads a property from JSON dynamic object and returns the property value.\n/// \u003c/summary\u003e\npublic string JSONGetValue(object iObject, string propertyName)\n{\n}\n \n/// \u003csummary\u003e\n/// Extracts a JSON property from given JSON object and returns the value as JSON object.\n/// \u003c/summary\u003e\npublic object JSONGetObject(object jsonParsedObject, string propertyName)\n{\n}\n \n/// \u003csummary\u003e\n/// Show modal modern UI calendar for vBA users\n/// \u003c/summary\u003e\n/// \u003creturns\u003e\u003c/returns\u003e\npublic DateTime ShowCalendar()\n{\n}\n \n/// \u003csummary\u003e\n/// Shows custom open file dialog. Allows drag and drop too.\n/// \u003c/summary\u003e\n/// \u003creturns\u003eJson formatted string\u003c/returns\u003e\npublic string ShowDialogForFile(string Message = \"\", bool AllowMulti = true, string[] Filters = null, int PosX =0, int PosY =0, string ThemeBg=\"\", string ThemeForeColour=\"\", bool closeAfterFileDrop = true)\n{\n}\n \n/// \u003csummary\u003e\n/// Shows custom open file dialog. Allows drag and drop too.\n/// \u003c/summary\u003e\n/// \u003creturns\u003eString[] array\u003c/returns\u003e\npublic string[] ShowDialogForFileArray(string Message = \"\", bool AllowMulti = true, string[] Filters = null, int PosX = 0, int PosY = 0, string ThemeBg = \"\", string ThemeForeColour = \"\", bool closeAfterFileDrop = true)\n{\n}\n \n/// \u003csummary\u003e\n/// Converts HTML color to access color code\n/// \u003c/summary\u003e\npublic int ColorHexToAccess(string HTMLColor)\n{\n}\n \n/// \u003csummary\u003e\n/// Converts MS ACCESS color to HTML colour code\n/// \u003c/summary\u003e\npublic string ColorAccessToHex(long AccessColor)\n{\n}\n \n \n/// \u003csummary\u003e\n/// Returns true or false whether the url is reachable\n/// \u003c/summary\u003e\npublic bool UrlIsReachable(string url)\n{\n}\n \n/// \u003csummary\u003e\n/// Returns true or false whether the url is well formatted\n/// \u003c/summary\u003e\npublic bool UrlIsValid(string url)\n{\n}\n/// \u003csummary\u003e\n/// Is the given url a local file path?\n/// \u003c/summary\u003e\npublic bool UrlIsLocalPath(string p)\n{\n}\n \n/// \u003csummary\u003e\n/// Is the given url a local file path?\n/// \u003c/summary\u003e\npublic bool UriIsLocalPath(string p)\n{\n}\n \n// ------------------  Dell specific functions------------------------\n \n/// \u003csummary\u003e\n/// Returns App version\n/// \u003c/summary\u003e\npublic string version()\n{\n}\n \npublic string copyright()\n{\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FkrishKM%2FModern-UI-Components-for-VBA","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FkrishKM%2FModern-UI-Components-for-VBA","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FkrishKM%2FModern-UI-Components-for-VBA/lists"}