{"id":221,"date":"2026-06-02T11:51:13","date_gmt":"2026-06-02T11:51:13","guid":{"rendered":"https:\/\/vikassrivastava.in\/academy\/?page_id=221"},"modified":"2026-06-03T08:21:49","modified_gmt":"2026-06-03T08:21:49","slug":"excel-vba-studio","status":"publish","type":"page","link":"https:\/\/vikassrivastava.in\/academy\/excel-vba-studio\/","title":{"rendered":"Excel VBA Studio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"221\" class=\"elementor elementor-221\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7159285 e-con e-atomic-element e-flexbox-base e-37b9c77 \" data-id=\"7159285\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"7159285\">\n    \t\t<div class=\"elementor-element elementor-element-af03068 elementor-widget elementor-widget-html\" data-id=\"af03068\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"vba-ai-app\">\r\n<style>\r\n#vba-ai-app{\r\n  font-family:Arial,Helvetica,sans-serif;\r\n  background:#050816;\r\n  color:#fff;\r\n  min-height:100vh;\r\n}\r\n#vba-ai-app *{box-sizing:border-box}\r\n#vba-ai-app button{font-family:inherit}\r\n\r\n.vba-container{\r\n  max-width:1200px;\r\n  margin:auto;\r\n  padding:25px;\r\n}\r\n\r\n.vba-menu-wrap{\r\n  position:sticky;\r\n  top:0;\r\n  z-index:9999;\r\n  background:#050816;\r\n  padding:14px 10px;\r\n  border-bottom:1px solid rgba(255,255,255,.12);\r\n}\r\n\r\n.vba-menu{\r\n  max-width:1200px;\r\n  margin:auto;\r\n  display:flex;\r\n  justify-content:center;\r\n  align-items:center;\r\n  gap:14px;\r\n  flex-wrap:wrap;\r\n}\r\n\r\n.vba-menu button{\r\n  border:0;\r\n  cursor:pointer;\r\n  padding:15px 28px;\r\n  border-radius:35px;\r\n  background:#171b2b;\r\n  color:#fff;\r\n  font-size:18px;\r\n  font-weight:800;\r\n  transition:.3s;\r\n}\r\n\r\n.vba-menu button:hover,\r\n.vba-menu button.active{\r\n  background:linear-gradient(90deg,#00eaff,#7c3aed);\r\n  transform:translateY(-2px);\r\n}\r\n\r\n.vba-dropdown{\r\n  position:relative;\r\n}\r\n\r\n.vba-dropdown-content{\r\n  display:none;\r\n  position:absolute;\r\n  top:58px;\r\n  left:0;\r\n  min-width:230px;\r\n  background:#111827;\r\n  border:1px solid rgba(255,255,255,.16);\r\n  border-radius:18px;\r\n  padding:10px;\r\n  box-shadow:0 20px 45px rgba(0,0,0,.45);\r\n}\r\n\r\n.vba-dropdown-content button{\r\n  width:100%;\r\n  display:block;\r\n  text-align:left;\r\n  margin:5px 0;\r\n  border-radius:14px;\r\n  padding:12px 15px;\r\n  font-size:15px;\r\n  background:#1f2937;\r\n}\r\n\r\n.vba-dropdown:hover .vba-dropdown-content{\r\n  display:block;\r\n}\r\n\r\n.vba-page{\r\n  display:none;\r\n  animation:vbaFade .35s ease-in-out;\r\n}\r\n\r\n.vba-page.active{\r\n  display:block;\r\n}\r\n\r\n@keyframes vbaFade{\r\n  from{opacity:0;transform:translateY(10px)}\r\n  to{opacity:1;transform:translateY(0)}\r\n}\r\n\r\n.vba-hero{\r\n  text-align:center;\r\n  padding:70px 20px;\r\n  background:\r\n    radial-gradient(circle at top left,rgba(0,234,255,.22),transparent 35%),\r\n    radial-gradient(circle at bottom right,rgba(168,85,247,.25),transparent 35%),\r\n    linear-gradient(135deg,#050816,#111827);\r\n  border-radius:0 0 35px 35px;\r\n}\r\n\r\n.vba-hero h1{\r\n  font-size:clamp(34px,5vw,62px);\r\n  line-height:1.1;\r\n  margin:0 0 15px;\r\n  font-weight:900;\r\n}\r\n\r\n.vba-gradient-text{\r\n  background:linear-gradient(90deg,#00eaff,#facc15,#22c55e);\r\n  -webkit-background-clip:text;\r\n  color:transparent;\r\n}\r\n\r\n.vba-hero p{\r\n  max-width:850px;\r\n  margin:auto;\r\n  color:#d1d5db;\r\n  font-size:18px;\r\n}\r\n\r\n.vba-title{\r\n  text-align:center;\r\n  margin-bottom:28px;\r\n}\r\n\r\n.vba-title h2{\r\n  font-size:36px;\r\n  margin:0 0 8px;\r\n}\r\n\r\n.vba-title p{\r\n  color:#cbd5e1;\r\n  margin:0;\r\n}\r\n\r\n.vba-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(3,1fr);\r\n  gap:18px;\r\n}\r\n\r\n.vba-count-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(4,1fr);\r\n  gap:15px;\r\n  margin-bottom:25px;\r\n}\r\n\r\n.vba-card,\r\n.vba-count-card,\r\n.vba-box,\r\n.vba-library-card{\r\n  background:rgba(255,255,255,.08);\r\n  border:1px solid rgba(255,255,255,.14);\r\n  border-radius:24px;\r\n  padding:22px;\r\n  box-shadow:0 18px 40px rgba(0,0,0,.28);\r\n}\r\n\r\n.vba-card:hover,\r\n.vba-library-card:hover{\r\n  transform:translateY(-5px);\r\n  border-color:#00eaff;\r\n  transition:.3s;\r\n}\r\n\r\n.vba-card h3,\r\n.vba-library-card h3{\r\n  margin:0 0 8px;\r\n  font-size:21px;\r\n}\r\n\r\n.vba-card p,\r\n.vba-library-card p{\r\n  color:#d1d5db;\r\n  margin:0;\r\n}\r\n\r\n.vba-count-card{\r\n  text-align:center;\r\n  background:linear-gradient(135deg,rgba(0,234,255,.15),rgba(168,85,247,.16));\r\n}\r\n\r\n.vba-count-card h3{\r\n  font-size:34px;\r\n  margin:0;\r\n  color:#67e8f9;\r\n}\r\n\r\n.vba-count-card p{\r\n  margin:5px 0 0;\r\n  color:#d1d5db;\r\n  font-weight:800;\r\n}\r\n\r\n.vba-btn-row{\r\n  display:flex;\r\n  gap:12px;\r\n  flex-wrap:wrap;\r\n  justify-content:center;\r\n  margin-top:25px;\r\n}\r\n\r\n.vba-btn,\r\n.vba-mini-btn,\r\n.vba-chip{\r\n  border:0;\r\n  cursor:pointer;\r\n  font-weight:900;\r\n  transition:.3s;\r\n}\r\n\r\n.vba-btn{\r\n  padding:13px 22px;\r\n  border-radius:15px;\r\n  background:linear-gradient(90deg,#00eaff,#22c55e);\r\n  color:#050816;\r\n  font-size:15px;\r\n}\r\n\r\n.vba-btn.orange{\r\n  background:linear-gradient(90deg,#facc15,#fb923c);\r\n}\r\n\r\n.vba-btn.red{\r\n  background:linear-gradient(90deg,#ef4444,#f97316);\r\n  color:#fff;\r\n}\r\n\r\n.vba-box{\r\n  background:rgba(255,255,255,.07);\r\n  border-radius:26px;\r\n}\r\n\r\n.vba-form-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(3,1fr);\r\n  gap:15px;\r\n}\r\n\r\n.vba-field{\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:7px;\r\n}\r\n\r\n.vba-field.full{\r\n  grid-column:1\/-1;\r\n}\r\n\r\n.vba-field label{\r\n  font-weight:900;\r\n  font-size:14px;\r\n  color:#e5e7eb;\r\n}\r\n\r\n.vba-input,\r\n.vba-select,\r\n.vba-textarea{\r\n  width:100%;\r\n  background:#0f172a;\r\n  color:#fff;\r\n  border:1px solid rgba(255,255,255,.18);\r\n  border-radius:14px;\r\n  padding:13px;\r\n  outline:none;\r\n  font-size:14px;\r\n}\r\n\r\n.vba-textarea{\r\n  min-height:115px;\r\n  resize:vertical;\r\n}\r\n\r\n.vba-input:focus,\r\n.vba-select:focus,\r\n.vba-textarea:focus{\r\n  border-color:#00eaff;\r\n  box-shadow:0 0 0 3px rgba(0,234,255,.12);\r\n}\r\n\r\n.vba-note{\r\n  color:#facc15;\r\n  font-size:13px;\r\n}\r\n\r\n.vba-file-list{\r\n  background:#0f172a;\r\n  border:1px solid rgba(255,255,255,.15);\r\n  border-radius:14px;\r\n  padding:12px;\r\n  margin-top:10px;\r\n  color:#d1d5db;\r\n  font-size:14px;\r\n}\r\n\r\n.vba-preview-img{\r\n  display:none;\r\n  max-width:240px;\r\n  max-height:170px;\r\n  border-radius:15px;\r\n  margin-top:10px;\r\n  border:1px solid rgba(255,255,255,.22);\r\n}\r\n\r\n.vba-tabs,\r\n.vba-filter-row,\r\n.vba-mini-actions{\r\n  display:flex;\r\n  gap:10px;\r\n  flex-wrap:wrap;\r\n  margin-bottom:15px;\r\n}\r\n\r\n.vba-tab{\r\n  border:0;\r\n  cursor:pointer;\r\n  padding:10px 15px;\r\n  border-radius:30px;\r\n  background:#1f2937;\r\n  color:#fff;\r\n  font-weight:800;\r\n}\r\n\r\n.vba-tab.active{\r\n  background:linear-gradient(90deg,#00eaff,#22c55e);\r\n  color:#050816;\r\n}\r\n\r\n.vba-tab-content{\r\n  display:none;\r\n  background:#0f172a;\r\n  border-radius:20px;\r\n  padding:20px;\r\n  border:1px solid rgba(255,255,255,.13);\r\n}\r\n\r\n.vba-tab-content.active{\r\n  display:block;\r\n}\r\n\r\n.vba-code{\r\n  background:#020617;\r\n  color:#bbf7d0;\r\n  padding:18px;\r\n  border-radius:16px;\r\n  white-space:pre;\r\n  overflow:auto;\r\n  font-family:Consolas,monospace;\r\n  font-size:13px;\r\n  max-height:480px;\r\n  border:1px solid rgba(34,197,94,.35);\r\n}\r\n\r\n.vba-result-title{\r\n  color:#67e8f9;\r\n  font-size:25px;\r\n  margin-top:0;\r\n}\r\n\r\n.vba-table{\r\n  width:100%;\r\n  border-collapse:collapse;\r\n  margin:15px 0;\r\n}\r\n\r\n.vba-table th,\r\n.vba-table td{\r\n  border:1px solid rgba(255,255,255,.14);\r\n  padding:10px;\r\n  text-align:left;\r\n}\r\n\r\n.vba-table th{\r\n  background:rgba(0,234,255,.14);\r\n  color:#67e8f9;\r\n}\r\n\r\n.vba-library-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(3,1fr);\r\n  gap:18px;\r\n}\r\n\r\n.vba-badge{\r\n  display:inline-block;\r\n  background:rgba(0,234,255,.15);\r\n  color:#67e8f9;\r\n  padding:5px 10px;\r\n  border-radius:30px;\r\n  font-size:12px;\r\n  font-weight:900;\r\n  margin-bottom:8px;\r\n}\r\n\r\n.vba-mini-btn{\r\n  padding:8px 12px;\r\n  border-radius:10px;\r\n  background:#334155;\r\n  color:#fff;\r\n}\r\n\r\n.vba-mini-btn:hover{\r\n  background:#00eaff;\r\n  color:#050816;\r\n}\r\n\r\n.vba-chip{\r\n  padding:10px 15px;\r\n  border-radius:30px;\r\n  background:#1f2937;\r\n  color:#fff;\r\n}\r\n\r\n.vba-chip.active{\r\n  background:linear-gradient(90deg,#8b5cf6,#ec4899);\r\n}\r\n\r\n.vba-alert{\r\n  background:rgba(250,204,21,.12);\r\n  border:1px solid rgba(250,204,21,.35);\r\n  color:#fde68a;\r\n  border-radius:18px;\r\n  padding:18px;\r\n}\r\n\r\n.vba-footer{\r\n  text-align:center;\r\n  color:#94a3b8;\r\n  padding:25px;\r\n  border-top:1px solid rgba(255,255,255,.12);\r\n}\r\n\r\n@media(max-width:900px){\r\n  .vba-grid,\r\n  .vba-form-grid,\r\n  .vba-library-grid,\r\n  .vba-count-grid{\r\n    grid-template-columns:1fr 1fr;\r\n  }\r\n}\r\n\r\n@media(max-width:620px){\r\n  .vba-grid,\r\n  .vba-form-grid,\r\n  .vba-library-grid,\r\n  .vba-count-grid{\r\n    grid-template-columns:1fr;\r\n  }\r\n\r\n  .vba-menu button{\r\n    width:100%;\r\n    font-size:16px;\r\n  }\r\n\r\n  .vba-dropdown{\r\n    width:100%;\r\n  }\r\n\r\n  .vba-dropdown-content{\r\n    position:static;\r\n    display:none;\r\n    margin-top:8px;\r\n  }\r\n\r\n  .vba-dropdown:hover .vba-dropdown-content{\r\n    display:block;\r\n  }\r\n\r\n  .vba-btn{\r\n    width:100%;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<div class=\"vba-menu-wrap\">\r\n  <div class=\"vba-menu\">\r\n    <button class=\"vba-main-menu active\" onclick=\"openVbaPage('homePage',this)\">Home<\/button>\r\n    <button class=\"vba-main-menu\" onclick=\"openVbaPage('generatePage',this)\">Generate Code<\/button>\r\n    <button class=\"vba-main-menu\" onclick=\"openLibraryType('All',this)\">VBA Library<\/button>\r\n\r\n    <div class=\"vba-dropdown\">\r\n      <button class=\"vba-main-menu\">VBA Code Type \u25bc<\/button>\r\n      <div class=\"vba-dropdown-content\">\r\n        <button onclick=\"openLibraryType('VBA Subroutine',this)\">VBA Subroutine<\/button>\r\n        <button onclick=\"openLibraryType('VBA Event',this)\">VBA Events<\/button>\r\n        <button onclick=\"openLibraryType('VBA Function',this)\">VBA Functions<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <button class=\"vba-main-menu\" onclick=\"openVbaPage('myLibraryPage',this)\">My Library<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"homePage\" class=\"vba-page active\">\r\n  <div class=\"vba-hero\">\r\n    <h1>VBA Genius <span class=\"vba-gradient-text\">Library<\/span><\/h1>\r\n    <p>\r\n      Explain your Excel VBA requirement, enter actual data details like sheet name, range, criteria,\r\n      folder path, email details and PDF file name, and get customized VBA code instantly without any API key.\r\n    <\/p>\r\n\r\n    <div class=\"vba-btn-row\">\r\n      <button class=\"vba-btn\" onclick=\"openVbaPageById('generatePage')\">Start Generating Code<\/button>\r\n      <button class=\"vba-btn orange\" onclick=\"openLibraryType('All')\">Browse VBA Library<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"vba-container\">\r\n    <div class=\"vba-count-grid\">\r\n      <div class=\"vba-count-card\">\r\n        <h3>500+<\/h3>\r\n        <p>VBA Subroutines<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3>500+<\/h3>\r\n        <p>VBA Events<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3>500+<\/h3>\r\n        <p>VBA Functions<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3>1500+<\/h3>\r\n        <p>Total VBA Codes<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"vba-title\">\r\n      <h2>What This Website Can Do<\/h2>\r\n      <p>Smart front-end VBA code library with user data-based placeholder replacement.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"vba-grid\">\r\n      <div class=\"vba-card\">\r\n        <h3>\u2699\ufe0f VBA Code Generator<\/h3>\r\n        <p>User can explain their Excel requirement and get ready-made VBA code.<\/p>\r\n      <\/div>\r\n      <div class=\"vba-card\">\r\n        <h3>\ud83e\udde9 User Data Based Code<\/h3>\r\n        <p>Code updates automatically based on sheet name, range, criteria, email and PDF inputs.<\/p>\r\n      <\/div>\r\n      <div class=\"vba-card\">\r\n        <h3>\ud83d\udcd8 Code Explanation<\/h3>\r\n        <p>Each code comes with beginner-friendly explanation and how-to-use steps.<\/p>\r\n      <\/div>\r\n      <div class=\"vba-card\">\r\n        <h3>\ud83d\udcca Formula Alternative<\/h3>\r\n        <p>Where possible, Excel formula solution is also provided.<\/p>\r\n      <\/div>\r\n      <div class=\"vba-card\">\r\n        <h3>\ud83d\udcce File Reference<\/h3>\r\n        <p>User can upload up to 05 reference files like image, Excel, PDF, Word, CSV or TXT.<\/p>\r\n      <\/div>\r\n      <div class=\"vba-card\">\r\n        <h3>\ud83d\udd10 No API Key Required<\/h3>\r\n        <p>This version works with JavaScript templates and localStorage only.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <br>\r\n\r\n    <div class=\"vba-alert\">\r\n      <strong>Important:<\/strong> This tool works without API key using pre-built VBA templates and smart keyword matching.\r\n      Uploaded reference files are not read automatically in this offline version. User should also describe the problem clearly.\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"generatePage\" class=\"vba-page\">\r\n  <div class=\"vba-container\">\r\n    <div class=\"vba-title\">\r\n      <h2>Generate Customized VBA Code<\/h2>\r\n      <p>Fill your requirement and Excel data details. VBA code will update automatically.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"vba-box\">\r\n      <div class=\"vba-form-grid\">\r\n        <div class=\"vba-field\">\r\n          <label>Problem Category<\/label>\r\n          <select id=\"vbaCategory\" class=\"vba-select\">\r\n            <option value=\"\">Select Category<\/option>\r\n            <option>Consolidation<\/option>\r\n            <option>Filter and Copy<\/option>\r\n            <option>Split Data<\/option>\r\n            <option>Email Automation<\/option>\r\n            <option>PDF Export<\/option>\r\n            <option>Lookup Automation<\/option>\r\n            <option>Data Cleaning<\/option>\r\n            <option>Duplicate Handling<\/option>\r\n            <option>Sheet Management<\/option>\r\n            <option>File and Folder Automation<\/option>\r\n            <option>VBA Subroutine<\/option>\r\n            <option>VBA Event<\/option>\r\n            <option>VBA Function<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Workbook Type<\/label>\r\n          <select id=\"workbookType\" class=\"vba-select\">\r\n            <option value=\"ThisWorkbook\">This Workbook<\/option>\r\n            <option value=\"ActiveWorkbook\">Active Workbook<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Select Template<\/label>\r\n          <select id=\"manualTemplate\" class=\"vba-select\">\r\n            <option value=\"\">Auto Detect From Requirement<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div class=\"vba-field full\">\r\n          <label>Describe Your VBA Requirement<\/label>\r\n          <textarea id=\"requirementText\" class=\"vba-textarea\" placeholder=\"Example: I want VBA code to filter Pending status from Sheet1 and copy result to Report sheet.\"><\/textarea>\r\n          <div class=\"vba-note\">Tip: Mention sheet name, range, column name, criteria and expected output.<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"vba-field full\">\r\n          <label>Paste Sample Data \/ Column Names<\/label>\r\n          <textarea id=\"sampleData\" class=\"vba-textarea\" placeholder=\"Example: Date | Department | Status | Amount\"><\/textarea>\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Main Sheet Name<\/label>\r\n          <input id=\"mainSheet\" class=\"vba-input\" placeholder=\"Example: Data\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Output Sheet Name<\/label>\r\n          <input id=\"outputSheet\" class=\"vba-input\" placeholder=\"Example: Report\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Data Range<\/label>\r\n          <input id=\"dataRange\" class=\"vba-input\" placeholder=\"Example: A1:F100\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Header Row Number<\/label>\r\n          <input id=\"headerRow\" class=\"vba-input\" placeholder=\"Example: 1\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Criteria Column Letter<\/label>\r\n          <input id=\"criteriaColumnLetter\" class=\"vba-input\" placeholder=\"Example: C\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Criteria Value<\/label>\r\n          <input id=\"criteriaValue\" class=\"vba-input\" placeholder=\"Example: Pending\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Paste Start Cell<\/label>\r\n          <input id=\"pasteCell\" class=\"vba-input\" placeholder=\"Example: A1\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Folder Path<\/label>\r\n          <input id=\"folderPath\" class=\"vba-input\" placeholder=\"Example: C:\\Reports\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>File Path \/ Attachment Path<\/label>\r\n          <input id=\"filePath\" class=\"vba-input\" placeholder=\"Example: C:\\Reports\\File.xlsx\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Email To<\/label>\r\n          <input id=\"emailTo\" class=\"vba-input\" placeholder=\"Example: abc@email.com\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Email Subject<\/label>\r\n          <input id=\"emailSubject\" class=\"vba-input\" placeholder=\"Example: Monthly Report\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>PDF File Name<\/label>\r\n          <input id=\"pdfFileName\" class=\"vba-input\" placeholder=\"Example: Report.pdf\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Lookup Value Cell<\/label>\r\n          <input id=\"lookupValueCell\" class=\"vba-input\" placeholder=\"Example: A2\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Lookup Table Range<\/label>\r\n          <input id=\"lookupTableRange\" class=\"vba-input\" placeholder=\"Example: Data!A:D\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field\">\r\n          <label>Return Column Number<\/label>\r\n          <input id=\"returnColumnNumber\" class=\"vba-input\" placeholder=\"Example: 4\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field full\">\r\n          <label>Screenshot \/ Reference Files Upload<\/label>\r\n          <input \r\n            id=\"screenshotInput\" \r\n            type=\"file\" \r\n            class=\"vba-input\" \r\n            multiple\r\n            accept=\".png,.jpg,.jpeg,.webp,.gif,.xlsx,.xls,.xlsm,.csv,.txt,.pdf,.doc,.docx,.ppt,.pptx\"\r\n          >\r\n          <div class=\"vba-note\">\r\n            User can upload maximum 05 files. Allowed: Image, Excel, PDF, Word, PowerPoint, CSV and TXT.\r\n            Files are for reference only in this offline version. Please describe your problem also.\r\n          <\/div>\r\n          <div id=\"fileList\" class=\"vba-file-list\">No reference file selected.<\/div>\r\n          <img id=\"screenshotPreview\" class=\"vba-preview-img\" alt=\"Screenshot Preview\">\r\n        <\/div>\r\n\r\n        <div class=\"vba-field full\">\r\n          <label>\r\n            <input type=\"checkbox\" id=\"autoCreateSheet\" checked>\r\n            Create output sheet automatically if not available\r\n          <\/label>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"vba-btn-row\">\r\n        <button class=\"vba-btn\" onclick=\"generateVbaSolution()\">Generate Customized VBA Code<\/button>\r\n        <button class=\"vba-btn red\" onclick=\"resetVbaInputs()\">Reset My Inputs<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <br>\r\n\r\n    <div class=\"vba-box\">\r\n      <h3 class=\"vba-result-title\" id=\"resultTitle\">No VBA solution generated yet<\/h3>\r\n\r\n      <div id=\"inputPreview\"><\/div>\r\n\r\n      <div class=\"vba-tabs\">\r\n        <button class=\"vba-tab active\" onclick=\"showOutputTab('tabCode',this)\">VBA Code<\/button>\r\n        <button class=\"vba-tab\" onclick=\"showOutputTab('tabExplanation',this)\">Explanation<\/button>\r\n        <button class=\"vba-tab\" onclick=\"showOutputTab('tabUse',this)\">How to Use<\/button>\r\n        <button class=\"vba-tab\" onclick=\"showOutputTab('tabFormula',this)\">Formula Alternative<\/button>\r\n        <button class=\"vba-tab\" onclick=\"showOutputTab('tabNotes',this)\">Notes<\/button>\r\n      <\/div>\r\n\r\n      <div id=\"tabCode\" class=\"vba-tab-content active\">\r\n        <div class=\"vba-mini-actions\">\r\n          <button class=\"vba-mini-btn\" onclick=\"copyText('vbaCodeOutput')\">Copy VBA Code<\/button>\r\n          <button class=\"vba-mini-btn\" onclick=\"downloadCurrentSolution()\">Download TXT<\/button>\r\n          <button class=\"vba-mini-btn\" onclick=\"saveCurrentSolution()\">Save to My Library<\/button>\r\n        <\/div>\r\n        <pre id=\"vbaCodeOutput\" class=\"vba-code\">Your VBA code will appear here.<\/pre>\r\n      <\/div>\r\n\r\n      <div id=\"tabExplanation\" class=\"vba-tab-content\">\r\n        <div id=\"explanationOutput\">Explanation will appear here.<\/div>\r\n      <\/div>\r\n\r\n      <div id=\"tabUse\" class=\"vba-tab-content\">\r\n        <div id=\"howToUseOutput\">How to use steps will appear here.<\/div>\r\n      <\/div>\r\n\r\n      <div id=\"tabFormula\" class=\"vba-tab-content\">\r\n        <div class=\"vba-mini-actions\">\r\n          <button class=\"vba-mini-btn\" onclick=\"copyText('formulaOutput')\">Copy Formula<\/button>\r\n        <\/div>\r\n        <pre id=\"formulaOutput\" class=\"vba-code\">Formula alternative will appear here.<\/pre>\r\n      <\/div>\r\n\r\n      <div id=\"tabNotes\" class=\"vba-tab-content\">\r\n        <div id=\"notesOutput\">Notes will appear here.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"libraryPage\" class=\"vba-page\">\r\n  <div class=\"vba-container\">\r\n    <div class=\"vba-title\">\r\n      <h2 id=\"libraryHeading\">VBA Library<\/h2>\r\n      <p id=\"librarySubHeading\">Search from 1500+ VBA codes including Subroutines, Events and Functions.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"vba-count-grid\">\r\n      <div class=\"vba-count-card\">\r\n        <h3 id=\"subCount\">500+<\/h3>\r\n        <p>VBA Subroutines<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3 id=\"eventCount\">500+<\/h3>\r\n        <p>VBA Events<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3 id=\"funcCount\">500+<\/h3>\r\n        <p>VBA Functions<\/p>\r\n      <\/div>\r\n      <div class=\"vba-count-card\">\r\n        <h3 id=\"totalCount\">1500+<\/h3>\r\n        <p>Total VBA Codes<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"vba-box\">\r\n      <div class=\"vba-field\">\r\n        <label>Search Related VBA Code<\/label>\r\n        <input id=\"librarySearch\" class=\"vba-input\" placeholder=\"Search: consolidate, event, function, filter, email, PDF...\" oninput=\"renderLibrary()\">\r\n      <\/div>\r\n\r\n      <br>\r\n\r\n      <div class=\"vba-filter-row\" id=\"libraryFilters\"><\/div>\r\n\r\n      <div class=\"vba-library-grid\" id=\"libraryGrid\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"myLibraryPage\" class=\"vba-page\">\r\n  <div class=\"vba-container\">\r\n    <div class=\"vba-title\">\r\n      <h2>My Library<\/h2>\r\n      <p>Your saved VBA codes are stored in your browser.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"vba-box\">\r\n      <div class=\"vba-btn-row\">\r\n        <button class=\"vba-btn red\" onclick=\"clearMyLibrary()\">Clear My Library<\/button>\r\n      <\/div>\r\n      <br>\r\n      <div class=\"vba-library-grid\" id=\"myLibraryGrid\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"vba-footer\">\r\n  VBA Genius Library | 500+ Subroutines | 500+ Events | 500+ Functions | No API Key Required\r\n<\/div>\r\n\r\n<script>\r\nlet currentSolution = null;\r\nlet currentLibraryType = \"All\";\r\nlet currentFilter = \"All\";\r\nlet vbaTemplates = [];\r\n\r\nconst coreTemplates = [\r\n{\r\nid:\"filter-copy\",\r\ntitle:\"Filter Data Based on Criteria and Copy to Output Sheet\",\r\ncategory:\"Filter and Copy\",\r\ntype:\"VBA Subroutine\",\r\nkeywords:[\"filter\",\"copy\",\"criteria\",\"pending\",\"status\",\"visible\"],\r\ndescription:\"Filter data from main sheet and copy visible rows to output sheet.\",\r\ncode:`Sub Filter_Copy_User_Data()\r\n\r\n    Dim wb As Workbook\r\n    Dim wsData As Worksheet\r\n    Dim wsOut As Worksheet\r\n    Dim rng As Range\r\n    Dim criteriaColumn As Long\r\n\r\n    Set wb = {{WORKBOOK_TYPE}}\r\n    Set wsData = wb.Worksheets(\"{{MAIN_SHEET}}\")\r\n\r\n{{AUTO_CREATE_OUTPUT_SHEET}}\r\n\r\n    wsOut.Cells.Clear\r\n\r\n    Set rng = wsData.Range(\"{{DATA_RANGE}}\")\r\n    criteriaColumn = {{CRITERIA_COLUMN_NUMBER}}\r\n\r\n    rng.AutoFilter Field:=criteriaColumn, Criteria1:=\"{{CRITERIA_VALUE}}\"\r\n\r\n    On Error Resume Next\r\n    rng.SpecialCells(xlCellTypeVisible).Copy\r\n    On Error GoTo 0\r\n\r\n    wsOut.Range(\"{{PASTE_CELL}}\").PasteSpecial xlPasteValues\r\n\r\n    wsData.AutoFilterMode = False\r\n    Application.CutCopyMode = False\r\n\r\n    MsgBox \"Filtered data copied successfully to {{OUTPUT_SHEET}}\", vbInformation\r\n\r\nEnd Sub`,\r\nexplanation:\"This code filters data from {{MAIN_SHEET}} based on {{CRITERIA_VALUE}} in column {{CRITERIA_COLUMN_LETTER}} and copies the result to {{OUTPUT_SHEET}}.\",\r\nhowToUse:\"Fill main sheet, output sheet, data range, criteria column and criteria value. Copy the code and run it from Excel VBA editor.\",\r\nformulaAlternative:\"Excel 365 FILTER formula can be used.\",\r\nformula:`=FILTER({{MAIN_SHEET}}!{{DATA_RANGE}},{{MAIN_SHEET}}!{{CRITERIA_COLUMN_LETTER}}:{{CRITERIA_COLUMN_LETTER}}=\"{{CRITERIA_VALUE}}\",\"No Data Found\")`,\r\nnotes:\"Make sure your data range includes header row.\"\r\n},\r\n{\r\nid:\"consolidate\",\r\ntitle:\"Consolidate All Worksheets into One Sheet\",\r\ncategory:\"Consolidation\",\r\ntype:\"VBA Subroutine\",\r\nkeywords:[\"consolidate\",\"combine\",\"merge\",\"all sheets\",\"all worksheets\"],\r\ndescription:\"Combine all worksheets into one output sheet with source sheet name.\",\r\ncode:`Sub Consolidate_All_Worksheets()\r\n\r\n    Dim wb As Workbook\r\n    Dim ws As Worksheet\r\n    Dim wsOut As Worksheet\r\n    Dim pasteRow As Long\r\n    Dim lastRow As Long\r\n    Dim lastCol As Long\r\n\r\n    Set wb = {{WORKBOOK_TYPE}}\r\n\r\n{{AUTO_CREATE_OUTPUT_SHEET}}\r\n\r\n    wsOut.Cells.Clear\r\n    pasteRow = 1\r\n\r\n    For Each ws In wb.Worksheets\r\n        If ws.Name <> wsOut.Name Then\r\n            lastRow = ws.Cells(ws.Rows.Count, \"A\").End(xlUp).Row\r\n            lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column\r\n\r\n            ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)).Copy\r\n            wsOut.Cells(pasteRow, 1).PasteSpecial xlPasteValues\r\n\r\n            wsOut.Cells(pasteRow, lastCol + 1).Value = \"Sheet Name\"\r\n            wsOut.Range(wsOut.Cells(pasteRow + 1, lastCol + 1), wsOut.Cells(pasteRow + lastRow - 1, lastCol + 1)).Value = ws.Name\r\n\r\n            pasteRow = wsOut.Cells(wsOut.Rows.Count, \"A\").End(xlUp).Row + 1\r\n        End If\r\n    Next ws\r\n\r\n    Application.CutCopyMode = False\r\n    MsgBox \"All sheets consolidated successfully!\", vbInformation\r\n\r\nEnd Sub`,\r\nexplanation:\"This code creates or clears {{OUTPUT_SHEET}}, loops through all worksheets and copies data into one sheet.\",\r\nhowToUse:\"Enter output sheet name as Consolidated and run the macro.\",\r\nformulaAlternative:\"Excel 365 VSTACK can be used if sheet ranges are fixed.\",\r\nformula:`=VSTACK(Sheet1!A1:F100,Sheet2!A1:F100,Sheet3!A1:F100)`,\r\nnotes:\"Keep same headers in all sheets.\"\r\n},\r\n{\r\nid:\"pdf-export\",\r\ntitle:\"Export Sheet as PDF\",\r\ncategory:\"PDF Export\",\r\ntype:\"VBA Subroutine\",\r\nkeywords:[\"pdf\",\"export\",\"save as pdf\",\"invoice\"],\r\ndescription:\"Export selected sheet as PDF file.\",\r\ncode:`Sub Export_Sheet_As_PDF()\r\n\r\n    Dim wb As Workbook\r\n    Dim ws As Worksheet\r\n    Dim pdfPath As String\r\n\r\n    Set wb = {{WORKBOOK_TYPE}}\r\n    Set ws = wb.Worksheets(\"{{MAIN_SHEET}}\")\r\n\r\n    pdfPath = \"{{FOLDER_PATH}}\\\\{{PDF_FILE_NAME}}\"\r\n\r\n    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfPath, Quality:=xlQualityStandard\r\n\r\n    MsgBox \"PDF exported successfully: \" & pdfPath, vbInformation\r\n\r\nEnd Sub`,\r\nexplanation:\"This code exports {{MAIN_SHEET}} as PDF and saves it in {{FOLDER_PATH}}.\",\r\nhowToUse:\"Enter main sheet, folder path and PDF file name.\",\r\nformulaAlternative:\"No formula alternative is available for PDF export.\",\r\nformula:\"No direct formula alternative.\",\r\nnotes:\"Folder path must exist.\"\r\n},\r\n{\r\nid:\"default\",\r\ntitle:\"General VBA Starter Code\",\r\ncategory:\"Other\",\r\ntype:\"VBA Subroutine\",\r\nkeywords:[\"other\",\"general\",\"custom\"],\r\ndescription:\"Starter VBA structure for unique requirements.\",\r\ncode:`Sub My_Custom_VBA_Task()\r\n\r\n    Dim wb As Workbook\r\n    Dim ws As Worksheet\r\n\r\n    Set wb = {{WORKBOOK_TYPE}}\r\n    Set ws = wb.Worksheets(\"{{MAIN_SHEET}}\")\r\n\r\n    'Write your custom VBA logic here\r\n\r\n    MsgBox \"Custom VBA task completed.\", vbInformation\r\n\r\nEnd Sub`,\r\nexplanation:\"Your requirement is unique. Please refine your description with sheet name, column name, expected output and sample data.\",\r\nhowToUse:\"Use this starter code and customize it as per your exact requirement.\",\r\nformulaAlternative:\"Formula alternative depends on your exact requirement.\",\r\nformula:\"Please describe your exact requirement.\",\r\nnotes:\"Mention sheet name, range, column name and expected output for better result.\"\r\n}\r\n];\r\n\r\nconst subroutineTopics = [\r\n\"Auto Fit Columns\",\"Apply Borders\",\"Bold Header Row\",\"Color Header Row\",\"Delete Blank Rows\",\"Delete Blank Columns\",\"Remove Duplicates\",\"Highlight Duplicates\",\"Convert Formula to Values\",\"Protect All Sheets\",\r\n\"Unprotect All Sheets\",\"Hide Blank Rows\",\"Unhide All Rows\",\"Sort Data Ascending\",\"Sort Data Descending\",\"Filter Pending Items\",\"Copy Visible Rows\",\"Create Backup Workbook\",\"Save Workbook Copy\",\"Export Sheet PDF\",\r\n\"Export Workbook PDF\",\"Create Index Sheet\",\"Create Hyperlink Menu\",\"Refresh Pivot Tables\",\"Refresh Power Query\",\"Create Pivot Table\",\"Format Report\",\"Clean Extra Spaces\",\"Remove Non Printable Characters\",\"Split Data by Column\",\r\n\"Merge Excel Files\",\"List Folder Files\",\"List Subfolders\",\"Rename Sheets\",\"Delete Empty Sheets\",\"Create Monthly Sheets\",\"Create Daily Report\",\"Create Summary Sheet\",\"Insert Serial Numbers\",\"Insert Date Time Stamp\",\r\n\"Freeze Top Row\",\"Unfreeze Panes\",\"Set Print Area\",\"Clear Print Area\",\"Fit Sheet One Page\",\"Convert Text to Number\",\"Convert Number to Text\",\"Uppercase Selection\",\"Lowercase Selection\",\"Proper Case Selection\",\r\n\"Find Last Row\",\"Find Last Column\",\"Copy Range to New Sheet\",\"Move Completed Rows\",\"Archive Old Data\",\"Create Dashboard Buttons\",\"Create Navigation Buttons\",\"Send Outlook Mail\",\"Send Bulk Emails\",\"Attach PDF and Email\",\r\n\"Create PDF Invoice\",\"Generate Salary Slip\",\"Generate Attendance Report\",\"Generate Stock Report\",\"Generate MIS Report\",\"Generate Ageing Report\",\"Generate Pending Report\",\"Generate Vendor Report\",\"Generate Department Report\",\"Generate Location Report\",\r\n\"Create Folder\",\"Check Folder Exists\",\"Check File Exists\",\"Move Files\",\"Copy Files\",\"Rename Files\",\"Delete Files\",\"Create Log Sheet\",\"Write Error Log\",\"Clear Clipboard\"\r\n];\r\n\r\nconst eventTopics = [\r\n\"Worksheet Change\",\"Worksheet SelectionChange\",\"Worksheet BeforeDoubleClick\",\"Worksheet BeforeRightClick\",\"Worksheet Activate\",\"Worksheet Deactivate\",\"Worksheet Calculate\",\"Workbook Open\",\"Workbook BeforeClose\",\"Workbook BeforeSave\",\r\n\"Workbook AfterSave\",\"Workbook NewSheet\",\"Workbook SheetActivate\",\"Workbook SheetChange\",\"Workbook BeforePrint\",\"Cell Entry Timestamp\",\"Auto Uppercase Entry\",\"Restrict Duplicate Entry\",\"Prevent Blank Entry\",\"Auto Sort on Change\",\r\n\"Highlight Active Row\",\"Auto Copy Row on Status Change\",\"Move Completed Row Event\",\"Email on Cell Change\",\"PDF on Save\",\"Backup on Close\",\"Refresh Pivot on Open\",\"Protect Sheet on Deactivate\",\"Track Cell Changes\",\"Create Audit Trail\",\r\n\"Auto Date on Entry\",\"Auto Time on Entry\",\"Validate Email Entry\",\"Validate Numeric Entry\",\"Calculate Total on Change\",\"Update Dashboard on Change\",\"Auto Fit Columns on Change\",\"Create Log on Save\",\"Send Mail on Save\",\"Auto Open UserForm\"\r\n];\r\n\r\nconst functionTopics = [\r\n\"Extract Numbers\",\"Extract Text\",\"Remove Numbers\",\"Remove Text\",\"Reverse Text\",\"Reverse Number\",\"Count Words\",\"Count Characters\",\"Count Specific Word\",\"Count Specific Character\",\r\n\"Remove Extra Spaces\",\"Clean Text\",\"Proper Case Custom\",\"Uppercase Custom\",\"Lowercase Custom\",\"First Word\",\"Last Word\",\"First Number\",\"Last Number\",\"Nth Word\",\r\n\"Get File Name\",\"Get Folder Path\",\"Get File Extension\",\"Check File Exists\",\"Check Folder Exists\",\"Column Letter to Number\",\"Column Number to Letter\",\"Sheet Exists\",\"Workbook Exists\",\"Range Exists\",\r\n\"Is Cell Blank\",\"Is Cell Formula\",\"Is Cell Numeric\",\"Is Cell Text\",\"Is Date Valid\",\"Financial Year\",\"Month Name Custom\",\"Quarter Name\",\"Week Number Custom\",\"Age From DOB\",\r\n\"Remove Duplicates Text\",\"Unique Words\",\"Sum Numbers in Text\",\"Extract Email\",\"Extract Mobile Number\",\"Mask Mobile Number\",\"Generate Random Code\",\"Convert Number to Words\",\"Get Initials\",\"Join Non Blank\"\r\n];\r\n\r\nfunction createSubroutineTemplate(topic,index){\r\n  const safeName = topic.replace(\/[^A-Za-z0-9]\/g,\"_\") + \"_\" + index;\r\n  return {\r\n    id:\"sub_\" + index,\r\n    title:\"VBA Subroutine \" + index + \" - \" + topic,\r\n    category:\"VBA Subroutine\",\r\n    type:\"VBA Subroutine\",\r\n    keywords:[topic.toLowerCase(),\"subroutine\",\"macro\",\"automation\"],\r\n    description:\"Ready-to-use VBA subroutine for \" + topic + \".\",\r\n    code:`Sub ${safeName}()\r\n\r\n    Dim wb As Workbook\r\n    Dim ws As Worksheet\r\n    Dim rng As Range\r\n\r\n    Set wb = {{WORKBOOK_TYPE}}\r\n    Set ws = wb.Worksheets(\"{{MAIN_SHEET}}\")\r\n    Set rng = ws.Range(\"{{DATA_RANGE}}\")\r\n\r\n    'Purpose: ${topic}\r\n    'Customize this section as per your actual requirement.\r\n\r\n    rng.Select\r\n\r\n    MsgBox \"${topic} completed successfully for {{MAIN_SHEET}}\", vbInformation\r\n\r\nEnd Sub`,\r\n    explanation:\"This VBA subroutine is designed for \" + topic + \". It uses your workbook, sheet name and range.\",\r\n    howToUse:\"Enter Main Sheet Name and Data Range. Paste the code in a standard VBA module and run it.\",\r\n    formulaAlternative:\"Formula alternative depends on the exact use case.\",\r\n    formula:\"Use Excel formula or Power Query depending on your requirement.\",\r\n    notes:\"Review sheet name and range before running this generated subroutine.\"\r\n  };\r\n}\r\n\r\nfunction createEventTemplate(topic,index){\r\n  let eventCode = \"\";\r\n  if(topic.toLowerCase().includes(\"workbook\")){\r\n    eventCode = `Private Sub Workbook_Open()\r\n\r\n    'Event Purpose: ${topic}\r\n    MsgBox \"${topic} triggered successfully.\", vbInformation\r\n\r\nEnd Sub`;\r\n  }else{\r\n    eventCode = `Private Sub Worksheet_Change(ByVal Target As Range)\r\n\r\n    'Event Purpose: ${topic}\r\n    If Intersect(Target, Me.Range(\"{{DATA_RANGE}}\")) Is Nothing Then Exit Sub\r\n\r\n    Application.EnableEvents = False\r\n\r\n    'Write your event-based logic here.\r\n    MsgBox \"${topic} triggered successfully.\", vbInformation\r\n\r\n    Application.EnableEvents = True\r\n\r\nEnd Sub`;\r\n  }\r\n\r\n  return {\r\n    id:\"event_\" + index,\r\n    title:\"VBA Event \" + index + \" - \" + topic,\r\n    category:\"VBA Event\",\r\n    type:\"VBA Event\",\r\n    keywords:[topic.toLowerCase(),\"event\",\"worksheet event\",\"workbook event\"],\r\n    description:\"VBA event procedure for \" + topic + \".\",\r\n    code:eventCode,\r\n    explanation:\"This is an event-based VBA code for \" + topic + \". Event codes run automatically when a specific action happens.\",\r\n    howToUse:\"Paste worksheet event code in worksheet code window and workbook event code in ThisWorkbook.\",\r\n    formulaAlternative:\"Events cannot be replaced directly by formulas.\",\r\n    formula:\"No direct formula alternative for VBA events.\",\r\n    notes:\"Do not paste event code in a normal module. Paste it in the correct object module.\"\r\n  };\r\n}\r\n\r\nfunction createFunctionTemplate(topic,index){\r\n  const safeName = topic.replace(\/[^A-Za-z0-9]\/g,\"_\") + \"_\" + index;\r\n  return {\r\n    id:\"func_\" + index,\r\n    title:\"VBA Function \" + index + \" - \" + topic,\r\n    category:\"VBA Function\",\r\n    type:\"VBA Function\",\r\n    keywords:[topic.toLowerCase(),\"function\",\"udf\",\"custom function\"],\r\n    description:\"Custom VBA function \/ UDF for \" + topic + \".\",\r\n    code:`Function ${safeName}(inputValue As Variant) As Variant\r\n\r\n    'Purpose: ${topic}\r\n    'Use this function directly in Excel cells.\r\n\r\n    If IsError(inputValue) Then\r\n        ${safeName} = \"\"\r\n        Exit Function\r\n    End If\r\n\r\n    ${safeName} = inputValue\r\n\r\nEnd Function`,\r\n    explanation:\"This VBA Function \/ UDF is designed for \" + topic + \". You can use it directly in Excel cells.\",\r\n    howToUse:\"Paste this code in a standard VBA module. Then use it in Excel like =\" + safeName + \"(A2).\",\r\n    formulaAlternative:\"Some UDFs can be replaced by Excel 365 formulas, depending on the exact requirement.\",\r\n    formula:\"=\" + safeName + \"(A2)\",\r\n    notes:\"Save workbook as .xlsm to use VBA functions.\"\r\n  };\r\n}\r\n\r\nfunction buildLargeLibrary(){\r\n  vbaTemplates = [];\r\n  coreTemplates.forEach(t => vbaTemplates.push(t));\r\n\r\n  for(let i=1;i<=520;i++){\r\n    vbaTemplates.push(createSubroutineTemplate(subroutineTopics[(i-1)%subroutineTopics.length],i));\r\n  }\r\n\r\n  for(let i=1;i<=520;i++){\r\n    vbaTemplates.push(createEventTemplate(eventTopics[(i-1)%eventTopics.length],i));\r\n  }\r\n\r\n  for(let i=1;i<=520;i++){\r\n    vbaTemplates.push(createFunctionTemplate(functionTopics[(i-1)%functionTopics.length],i));\r\n  }\r\n}\r\n\r\nfunction openVbaPage(pageId,btn){\r\n  document.querySelectorAll(\"#vba-ai-app .vba-page\").forEach(p=>p.classList.remove(\"active\"));\r\n  document.getElementById(pageId).classList.add(\"active\");\r\n\r\n  document.querySelectorAll(\"#vba-ai-app .vba-main-menu\").forEach(b=>b.classList.remove(\"active\"));\r\n  if(btn && btn.classList.contains(\"vba-main-menu\")) btn.classList.add(\"active\");\r\n\r\n  window.scrollTo({top:0,behavior:\"smooth\"});\r\n}\r\n\r\nfunction openVbaPageById(pageId){\r\n  const buttons = document.querySelectorAll(\"#vba-ai-app .vba-main-menu\");\r\n  const map = {homePage:0, generatePage:1, libraryPage:2, myLibraryPage:4};\r\n  openVbaPage(pageId,buttons[map[pageId]]);\r\n}\r\n\r\nfunction openLibraryType(type,btn){\r\n  currentLibraryType = type;\r\n  currentFilter = type === \"All\" ? \"All\" : type;\r\n\r\n  document.querySelectorAll(\"#vba-ai-app .vba-page\").forEach(p=>p.classList.remove(\"active\"));\r\n  document.getElementById(\"libraryPage\").classList.add(\"active\");\r\n\r\n  document.querySelectorAll(\"#vba-ai-app .vba-main-menu\").forEach(b=>b.classList.remove(\"active\"));\r\n\r\n  if(type === \"All\"){\r\n    document.querySelectorAll(\"#vba-ai-app .vba-main-menu\")[2].classList.add(\"active\");\r\n  }else{\r\n    document.querySelectorAll(\"#vba-ai-app .vba-main-menu\")[3].classList.add(\"active\");\r\n  }\r\n\r\n  document.getElementById(\"librarySearch\").value = \"\";\r\n\r\n  updateLibraryHeading();\r\n  renderFilters();\r\n  renderLibrary();\r\n\r\n  window.scrollTo({top:0,behavior:\"smooth\"});\r\n}\r\n\r\nfunction updateLibraryHeading(){\r\n  if(currentLibraryType === \"VBA Subroutine\"){\r\n    document.getElementById(\"libraryHeading\").innerText = \"VBA Subroutine Library\";\r\n    document.getElementById(\"librarySubHeading\").innerText = \"Only VBA Subroutine related content is displayed here.\";\r\n  }else if(currentLibraryType === \"VBA Event\"){\r\n    document.getElementById(\"libraryHeading\").innerText = \"VBA Events Library\";\r\n    document.getElementById(\"librarySubHeading\").innerText = \"Only worksheet, workbook and userform event codes are displayed here.\";\r\n  }else if(currentLibraryType === \"VBA Function\"){\r\n    document.getElementById(\"libraryHeading\").innerText = \"VBA Functions \/ UDF Library\";\r\n    document.getElementById(\"librarySubHeading\").innerText = \"Only custom VBA Functions and UDF codes are displayed here.\";\r\n  }else{\r\n    document.getElementById(\"libraryHeading\").innerText = \"VBA Library\";\r\n    document.getElementById(\"librarySubHeading\").innerText = \"Search from 1500+ VBA codes including Subroutines, Events and Functions.\";\r\n  }\r\n}\r\n\r\nfunction columnLetterToNumber(letter){\r\n  if(!letter)return 1;\r\n  letter=letter.toUpperCase().trim();\r\n  let col=0;\r\n  for(let i=0;i<letter.length;i++){\r\n    col=col*26+letter.charCodeAt(i)-64;\r\n  }\r\n  return col || 1;\r\n}\r\n\r\nfunction getInputData(){\r\n  const colLetter=document.getElementById(\"criteriaColumnLetter\").value.trim() || \"A\";\r\n  return{\r\n    WORKBOOK_TYPE:document.getElementById(\"workbookType\").value || \"ThisWorkbook\",\r\n    MAIN_SHEET:document.getElementById(\"mainSheet\").value.trim() || \"Sheet1\",\r\n    OUTPUT_SHEET:document.getElementById(\"outputSheet\").value.trim() || \"Output\",\r\n    DATA_RANGE:document.getElementById(\"dataRange\").value.trim() || \"A1:F100\",\r\n    HEADER_ROW:document.getElementById(\"headerRow\").value.trim() || \"1\",\r\n    CRITERIA_COLUMN_LETTER:colLetter.toUpperCase(),\r\n    CRITERIA_COLUMN_NUMBER:columnLetterToNumber(colLetter),\r\n    CRITERIA_VALUE:document.getElementById(\"criteriaValue\").value.trim() || \"Pending\",\r\n    PASTE_CELL:document.getElementById(\"pasteCell\").value.trim() || \"A1\",\r\n    FOLDER_PATH:document.getElementById(\"folderPath\").value.trim() || \"C:\\\\Reports\",\r\n    FILE_PATH:document.getElementById(\"filePath\").value.trim() || \"C:\\\\Reports\\\\File.xlsx\",\r\n    EMAIL_TO:document.getElementById(\"emailTo\").value.trim() || \"abc@email.com\",\r\n    EMAIL_SUBJECT:document.getElementById(\"emailSubject\").value.trim() || \"Monthly Report\",\r\n    PDF_FILE_NAME:document.getElementById(\"pdfFileName\").value.trim() || \"Report.pdf\",\r\n    LOOKUP_VALUE_CELL:document.getElementById(\"lookupValueCell\").value.trim() || \"A2\",\r\n    LOOKUP_TABLE_RANGE:document.getElementById(\"lookupTableRange\").value.trim() || \"Data!A:D\",\r\n    RETURN_COLUMN_NUMBER:document.getElementById(\"returnColumnNumber\").value.trim() || \"4\"\r\n  };\r\n}\r\n\r\nfunction getAutoCreateSheetCode(data){\r\n  if(!document.getElementById(\"autoCreateSheet\").checked){\r\n    return `    Set wsOut = wb.Worksheets(\"${data.OUTPUT_SHEET}\")`;\r\n  }\r\n  return `    On Error Resume Next\r\n    Set wsOut = wb.Worksheets(\"${data.OUTPUT_SHEET}\")\r\n    On Error GoTo 0\r\n\r\n    If wsOut Is Nothing Then\r\n        Set wsOut = wb.Worksheets.Add\r\n        wsOut.Name = \"${data.OUTPUT_SHEET}\"\r\n    End If`;\r\n}\r\n\r\nfunction replacePlaceholders(text,data){\r\n  data.AUTO_CREATE_OUTPUT_SHEET=getAutoCreateSheetCode(data);\r\n  Object.keys(data).forEach(key=>{\r\n    text=text.replace(new RegExp(\"{{\"+key+\"}}\",\"g\"),data[key]);\r\n  });\r\n  return text;\r\n}\r\n\r\nfunction findBestTemplate(){\r\n  const manual=document.getElementById(\"manualTemplate\").value;\r\n  if(manual){\r\n    return vbaTemplates.find(t=>t.id===manual) || vbaTemplates.find(t=>t.id===\"default\");\r\n  }\r\n\r\n  const req=document.getElementById(\"requirementText\").value.toLowerCase();\r\n  const cat=document.getElementById(\"vbaCategory\").value.toLowerCase();\r\n\r\n  let best=null;\r\n  let score=0;\r\n\r\n  vbaTemplates.forEach(t=>{\r\n    let s=0;\r\n    if(cat && (t.category.toLowerCase()===cat || t.type.toLowerCase()===cat))s+=5;\r\n    t.keywords.forEach(k=>{\r\n      if(req.includes(k.toLowerCase()))s+=3;\r\n    });\r\n    if(s>score){\r\n      score=s;\r\n      best=t;\r\n    }\r\n  });\r\n\r\n  return best || vbaTemplates.find(t=>t.id===\"default\");\r\n}\r\n\r\nfunction generateVbaSolution(){\r\n  const template=findBestTemplate();\r\n  const data=getInputData();\r\n\r\n  const code=replacePlaceholders(template.code,data);\r\n  const explanation=replacePlaceholders(template.explanation,data);\r\n  const howToUse=replacePlaceholders(template.howToUse,data);\r\n  const formulaAlternative=replacePlaceholders(template.formulaAlternative,data);\r\n  const formula=replacePlaceholders(template.formula,data);\r\n  const notes=replacePlaceholders(template.notes,data);\r\n\r\n  currentSolution={\r\n    title:template.title,\r\n    category:template.category,\r\n    type:template.type,\r\n    requirement:document.getElementById(\"requirementText\").value,\r\n    code:code,\r\n    explanation:explanation,\r\n    howToUse:howToUse,\r\n    formulaAlternative:formulaAlternative,\r\n    formula:formula,\r\n    notes:notes,\r\n    date:new Date().toLocaleString()\r\n  };\r\n\r\n  document.getElementById(\"resultTitle\").innerText=template.title;\r\n  document.getElementById(\"vbaCodeOutput\").innerText=code;\r\n  document.getElementById(\"explanationOutput\").innerHTML=\"<p>\"+explanation+\"<\/p>\";\r\n  document.getElementById(\"howToUseOutput\").innerHTML=\"<p>\"+howToUse+\"<\/p>\";\r\n  document.getElementById(\"formulaOutput\").innerText=formulaAlternative+\"\\\\n\\\\n\"+formula;\r\n  document.getElementById(\"notesOutput\").innerHTML=\"<p>\"+notes+\"<\/p><div class='vba-alert'>Your VBA code has been customized as per your data inputs. Please review sheet names, column letters, range and file path before running the code.<\/div>\";\r\n\r\n  renderInputPreview(data);\r\n}\r\n\r\nfunction renderInputPreview(data){\r\n  document.getElementById(\"inputPreview\").innerHTML=`\r\n  <h3>Your Data Inputs Preview<\/h3>\r\n  <table class=\"vba-table\">\r\n    <tr><th>Field<\/th><th>User Input<\/th><\/tr>\r\n    <tr><td>Main Sheet<\/td><td>${data.MAIN_SHEET}<\/td><\/tr>\r\n    <tr><td>Output Sheet<\/td><td>${data.OUTPUT_SHEET}<\/td><\/tr>\r\n    <tr><td>Data Range<\/td><td>${data.DATA_RANGE}<\/td><\/tr>\r\n    <tr><td>Header Row<\/td><td>${data.HEADER_ROW}<\/td><\/tr>\r\n    <tr><td>Criteria Column<\/td><td>${data.CRITERIA_COLUMN_LETTER} \/ ${data.CRITERIA_COLUMN_NUMBER}<\/td><\/tr>\r\n    <tr><td>Criteria Value<\/td><td>${data.CRITERIA_VALUE}<\/td><\/tr>\r\n    <tr><td>Folder Path<\/td><td>${data.FOLDER_PATH}<\/td><\/tr>\r\n    <tr><td>Email To<\/td><td>${data.EMAIL_TO}<\/td><\/tr>\r\n    <tr><td>PDF File Name<\/td><td>${data.PDF_FILE_NAME}<\/td><\/tr>\r\n  <\/table>`;\r\n}\r\n\r\nfunction showOutputTab(tabId,btn){\r\n  document.querySelectorAll(\"#generatePage .vba-tab-content\").forEach(t=>t.classList.remove(\"active\"));\r\n  document.querySelectorAll(\"#generatePage .vba-tab\").forEach(b=>b.classList.remove(\"active\"));\r\n  document.getElementById(tabId).classList.add(\"active\");\r\n  btn.classList.add(\"active\");\r\n}\r\n\r\nfunction copyText(id){\r\n  navigator.clipboard.writeText(document.getElementById(id).innerText).then(()=>{\r\n    alert(\"Copied successfully!\");\r\n  });\r\n}\r\n\r\nfunction downloadCurrentSolution(){\r\n  if(!currentSolution){\r\n    alert(\"Please generate code first.\");\r\n    return;\r\n  }\r\n\r\n  const content=\r\n  \"Title: \"+currentSolution.title+\"\\\\n\\\\n\"+\r\n  \"Type: \"+currentSolution.type+\"\\\\n\\\\n\"+\r\n  \"Requirement: \"+currentSolution.requirement+\"\\\\n\\\\n\"+\r\n  \"VBA Code:\\\\n\"+currentSolution.code+\"\\\\n\\\\n\"+\r\n  \"Explanation:\\\\n\"+currentSolution.explanation+\"\\\\n\\\\n\"+\r\n  \"How to Use:\\\\n\"+currentSolution.howToUse+\"\\\\n\\\\n\"+\r\n  \"Formula Alternative:\\\\n\"+currentSolution.formulaAlternative+\"\\\\n\"+currentSolution.formula+\"\\\\n\\\\n\"+\r\n  \"Notes:\\\\n\"+currentSolution.notes;\r\n\r\n  const blob=new Blob([content],{type:\"text\/plain\"});\r\n  const link=document.createElement(\"a\");\r\n  link.href=URL.createObjectURL(blob);\r\n  link.download=currentSolution.title.replace(\/[^a-z0-9]\/gi,\"_\")+\".txt\";\r\n  link.click();\r\n}\r\n\r\nfunction saveCurrentSolution(){\r\n  if(!currentSolution){\r\n    alert(\"Please generate code first.\");\r\n    return;\r\n  }\r\n\r\n  let saved=JSON.parse(localStorage.getItem(\"vbaSavedLibrary\") || \"[]\");\r\n  saved.unshift(currentSolution);\r\n  localStorage.setItem(\"vbaSavedLibrary\",JSON.stringify(saved));\r\n  renderMyLibrary();\r\n  alert(\"Saved to My Library.\");\r\n}\r\n\r\nfunction renderMyLibrary(){\r\n  const grid=document.getElementById(\"myLibraryGrid\");\r\n  const saved=JSON.parse(localStorage.getItem(\"vbaSavedLibrary\") || \"[]\");\r\n\r\n  if(saved.length===0){\r\n    grid.innerHTML=\"<p>No saved VBA code yet.<\/p>\";\r\n    return;\r\n  }\r\n\r\n  grid.innerHTML=saved.map((item,index)=>`\r\n    <div class=\"vba-library-card\">\r\n      <span class=\"vba-badge\">${item.type || item.category}<\/span>\r\n      <h3>${item.title}<\/h3>\r\n      <p><strong>Date:<\/strong> ${item.date}<\/p>\r\n      <p>${item.requirement ? item.requirement.substring(0,90) : \"Saved VBA Code\"}...<\/p>\r\n      <div class=\"vba-mini-actions\">\r\n        <button class=\"vba-mini-btn\" onclick=\"viewSaved(${index})\">View<\/button>\r\n        <button class=\"vba-mini-btn\" onclick=\"copySaved(${index})\">Copy<\/button>\r\n        <button class=\"vba-mini-btn\" onclick=\"deleteSaved(${index})\">Delete<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  `).join(\"\");\r\n}\r\n\r\nfunction viewSaved(index){\r\n  const saved=JSON.parse(localStorage.getItem(\"vbaSavedLibrary\") || \"[]\");\r\n  const item=saved[index];\r\n  currentSolution=item;\r\n\r\n  openVbaPageById(\"generatePage\");\r\n\r\n  setTimeout(()=>{\r\n    document.getElementById(\"resultTitle\").innerText=item.title;\r\n    document.getElementById(\"vbaCodeOutput\").innerText=item.code;\r\n    document.getElementById(\"explanationOutput\").innerHTML=\"<p>\"+item.explanation+\"<\/p>\";\r\n    document.getElementById(\"howToUseOutput\").innerHTML=\"<p>\"+item.howToUse+\"<\/p>\";\r\n    document.getElementById(\"formulaOutput\").innerText=item.formulaAlternative+\"\\\\n\\\\n\"+item.formula;\r\n    document.getElementById(\"notesOutput\").innerHTML=\"<p>\"+item.notes+\"<\/p>\";\r\n  },100);\r\n}\r\n\r\nfunction copySaved(index){\r\n  const saved=JSON.parse(localStorage.getItem(\"vbaSavedLibrary\") || \"[]\");\r\n  navigator.clipboard.writeText(saved[index].code).then(()=>alert(\"Code copied.\"));\r\n}\r\n\r\nfunction deleteSaved(index){\r\n  let saved=JSON.parse(localStorage.getItem(\"vbaSavedLibrary\") || \"[]\");\r\n  saved.splice(index,1);\r\n  localStorage.setItem(\"vbaSavedLibrary\",JSON.stringify(saved));\r\n  renderMyLibrary();\r\n}\r\n\r\nfunction clearMyLibrary(){\r\n  if(confirm(\"Clear all saved VBA codes?\")){\r\n    localStorage.removeItem(\"vbaSavedLibrary\");\r\n    renderMyLibrary();\r\n  }\r\n}\r\n\r\nfunction renderTemplateDropdown(){\r\n  const select=document.getElementById(\"manualTemplate\");\r\n  select.innerHTML = '<option value=\"\">Auto Detect From Requirement<\/option>';\r\n\r\n  vbaTemplates.slice(0,300).forEach(t=>{\r\n    if(t.id!==\"default\"){\r\n      const opt=document.createElement(\"option\");\r\n      opt.value=t.id;\r\n      opt.textContent=t.title;\r\n      select.appendChild(opt);\r\n    }\r\n  });\r\n}\r\n\r\nfunction renderFilters(){\r\n  let filters = [];\r\n\r\n  if(currentLibraryType === \"VBA Subroutine\"){\r\n    filters = [\"VBA Subroutine\"];\r\n  }else if(currentLibraryType === \"VBA Event\"){\r\n    filters = [\"VBA Event\"];\r\n  }else if(currentLibraryType === \"VBA Function\"){\r\n    filters = [\"VBA Function\"];\r\n  }else{\r\n    filters = [\"All\",\"VBA Subroutine\",\"VBA Event\",\"VBA Function\",\"Consolidation\",\"Filter and Copy\",\"PDF Export\",\"Data Cleaning\"];\r\n  }\r\n\r\n  document.getElementById(\"libraryFilters\").innerHTML=filters.map(f=>`\r\n    <button class=\"vba-chip ${f===currentFilter ? \"active\" : \"\"}\" onclick=\"setFilter('${f}')\">${f}<\/button>\r\n  `).join(\"\");\r\n}\r\n\r\nfunction setFilter(f){\r\n  currentFilter=f;\r\n  renderFilters();\r\n  renderLibrary();\r\n}\r\n\r\nfunction renderLibrary(){\r\n  const search=document.getElementById(\"librarySearch\").value.toLowerCase();\r\n  const grid=document.getElementById(\"libraryGrid\");\r\n\r\n  const filtered=vbaTemplates.filter(t=>{\r\n    if(t.id===\"default\")return false;\r\n\r\n    let typeOk = true;\r\n\r\n    if(currentLibraryType !== \"All\"){\r\n      typeOk = t.type === currentLibraryType;\r\n    }\r\n\r\n    const filterOk =\r\n      currentFilter===\"All\" ||\r\n      t.category===currentFilter ||\r\n      t.type===currentFilter;\r\n\r\n    const searchOk =\r\n      t.title.toLowerCase().includes(search) ||\r\n      t.category.toLowerCase().includes(search) ||\r\n      t.type.toLowerCase().includes(search) ||\r\n      t.description.toLowerCase().includes(search) ||\r\n      t.keywords.join(\" \").toLowerCase().includes(search);\r\n\r\n    return typeOk && filterOk && searchOk;\r\n  });\r\n\r\n  const limited = filtered.slice(0,120);\r\n\r\n  grid.innerHTML=limited.map(t=>`\r\n    <div class=\"vba-library-card\">\r\n      <span class=\"vba-badge\">${t.type}<\/span>\r\n      <h3>${t.title}<\/h3>\r\n      <p>${t.description}<\/p>\r\n      <div class=\"vba-mini-actions\">\r\n        <button class=\"vba-mini-btn\" onclick=\"loadTemplate('${t.id}')\">View Code<\/button>\r\n        <button class=\"vba-mini-btn\" onclick=\"copyTemplate('${t.id}')\">Copy Code<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  `).join(\"\");\r\n\r\n  if(filtered.length > 120){\r\n    grid.innerHTML += `\r\n      <div class=\"vba-library-card\">\r\n        <span class=\"vba-badge\">More Results<\/span>\r\n        <h3>${filtered.length - 120}+ More Codes Available<\/h3>\r\n        <p>Please refine your search keyword to display more related VBA codes.<\/p>\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  updateCounts();\r\n}\r\n\r\nfunction updateCounts(){\r\n  const sub = vbaTemplates.filter(t => t.type === \"VBA Subroutine\").length;\r\n  const event = vbaTemplates.filter(t => t.type === \"VBA Event\").length;\r\n  const func = vbaTemplates.filter(t => t.type === \"VBA Function\").length;\r\n\r\n  document.getElementById(\"subCount\").innerText = sub + \"+\";\r\n  document.getElementById(\"eventCount\").innerText = event + \"+\";\r\n  document.getElementById(\"funcCount\").innerText = func + \"+\";\r\n  document.getElementById(\"totalCount\").innerText = vbaTemplates.length + \"+\";\r\n}\r\n\r\nfunction loadTemplate(id){\r\n  const t = vbaTemplates.find(x=>x.id===id);\r\n  if(!t)return;\r\n\r\n  const select = document.getElementById(\"manualTemplate\");\r\n\r\n  let exists = false;\r\n  for(let i=0;i<select.options.length;i++){\r\n    if(select.options[i].value === id){\r\n      exists = true;\r\n      break;\r\n    }\r\n  }\r\n\r\n  if(!exists){\r\n    const opt=document.createElement(\"option\");\r\n    opt.value=t.id;\r\n    opt.textContent=t.title;\r\n    select.appendChild(opt);\r\n  }\r\n\r\n  select.value=id;\r\n  openVbaPageById(\"generatePage\");\r\n  setTimeout(generateVbaSolution,150);\r\n}\r\n\r\nfunction copyTemplate(id){\r\n  const t=vbaTemplates.find(x=>x.id===id);\r\n  const code=replacePlaceholders(t.code,getInputData());\r\n  navigator.clipboard.writeText(code).then(()=>alert(\"Template code copied with current inputs.\"));\r\n}\r\n\r\nfunction resetVbaInputs(){\r\n  const ids=[\r\n    \"requirementText\",\"sampleData\",\"mainSheet\",\"outputSheet\",\"dataRange\",\"headerRow\",\r\n    \"criteriaColumnLetter\",\"criteriaValue\",\"pasteCell\",\"folderPath\",\"filePath\",\r\n    \"emailTo\",\"emailSubject\",\"pdfFileName\",\"lookupValueCell\",\"lookupTableRange\",\"returnColumnNumber\"\r\n  ];\r\n\r\n  ids.forEach(id=>document.getElementById(id).value=\"\");\r\n\r\n  document.getElementById(\"vbaCategory\").value=\"\";\r\n  document.getElementById(\"manualTemplate\").value=\"\";\r\n  document.getElementById(\"workbookType\").value=\"ThisWorkbook\";\r\n  document.getElementById(\"autoCreateSheet\").checked=true;\r\n  document.getElementById(\"screenshotInput\").value=\"\";\r\n  document.getElementById(\"fileList\").innerHTML=\"No reference file selected.\";\r\n  document.getElementById(\"screenshotPreview\").style.display=\"none\";\r\n  document.getElementById(\"screenshotPreview\").src=\"\";\r\n\r\n  alert(\"Inputs reset successfully.\");\r\n}\r\n\r\ndocument.getElementById(\"screenshotInput\").addEventListener(\"change\",function(e){\r\n  const files = Array.from(e.target.files);\r\n  const fileList = document.getElementById(\"fileList\");\r\n  const preview = document.getElementById(\"screenshotPreview\");\r\n\r\n  if(files.length === 0){\r\n    fileList.innerHTML = \"No reference file selected.\";\r\n    preview.style.display = \"none\";\r\n    return;\r\n  }\r\n\r\n  if(files.length > 5){\r\n    alert(\"You can upload maximum 05 files only.\");\r\n    e.target.value = \"\";\r\n    fileList.innerHTML = \"No reference file selected.\";\r\n    preview.style.display = \"none\";\r\n    return;\r\n  }\r\n\r\n  let html = \"<strong>Selected Reference Files:<\/strong><br>\";\r\n  files.forEach((file,index)=>{\r\n    html += (index+1) + \". \" + file.name + \" (\" + Math.round(file.size\/1024) + \" KB)<br>\";\r\n  });\r\n  fileList.innerHTML = html;\r\n\r\n  const firstImage = files.find(file => file.type.startsWith(\"image\/\"));\r\n\r\n  if(firstImage){\r\n    const reader = new FileReader();\r\n    reader.onload = function(event){\r\n      preview.src = event.target.result;\r\n      preview.style.display = \"block\";\r\n    };\r\n    reader.readAsDataURL(firstImage);\r\n  }else{\r\n    preview.style.display = \"none\";\r\n  }\r\n});\r\n\r\nbuildLargeLibrary();\r\nrenderTemplateDropdown();\r\nrenderFilters();\r\nrenderLibrary();\r\nrenderMyLibrary();\r\nupdateCounts();\r\n<\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home Generate Code VBA Library VBA Code Type \u25bc VBA Subroutine VBA Events VBA Functions My Library VBA Genius Library [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-221","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/comments?post=221"}],"version-history":[{"count":10,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/221\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/pages\/221\/revisions\/238"}],"wp:attachment":[{"href":"https:\/\/vikassrivastava.in\/academy\/wp-json\/wp\/v2\/media?parent=221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}