Manager For Excel Activation Key: Invoice
'================================================================= ' UI UNLOCK – enables the buttons on the Dashboard sheet '================================================================= Private Sub UnlockUI() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Dashboard") Dim btnNew As Shape, btnSearch As Shape On Error Resume Next Set btnNew = ws.Shapes("btnNew") Set btnSearch = ws.Shapes("btnSearch") On Error GoTo 0 If Not btnNew Is Nothing Then btnNew.OnAction = "ShowInvoiceForm" If Not btnSearch Is Nothing Then btnSearch.OnAction = "ShowSearchForm" 'Optionally hide the activation prompt button (if you placed one) Dim btnActivate As Shape Set btnActivate = Nothing On Error Resume Next Set btnActivate = ws.Shapes("btnActivate") On Error GoTo 0 If Not btnActivate Is Nothing Then btnActivate.Visible = msoFalse End Sub
Private Sub btnSave_Click() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Invoices") '--- Basic validation ------------------------------------------------- If Trim(txtNo.Value) = "" Then MsgBox "Invoice number required.", vbExclamation Exit Sub End If '--- Compute total ---------------------------------------------------- Dim amt As Double, taxPct As Double, taxAmt As Double, total As Double amt = CDbl(Val(txtAmt.Value)) taxPct = CDbl(Val(txtTax.Value)) / 100 taxAmt = amt * taxPct total = amt + taxAmt txtTotal.Value = Format(total, "0.00") '--- Find existing row (edit) or append new ---------------------------- Dim r As Range, exists As Boolean Set r = ws.Columns("B").Find(What:=Trim(txtNo.Value), LookIn:=xlValues, LookAt:=xlWhole) If Not r Is Nothing Then exists = True Set r = r.EntireRow Else exists = False Set r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0) ' next empty row End If '--- Write data -------------------------------------------------------- r.Cells(1, 1).Value = IIf(IsDate(txtDate.Value), CDate(txtDate.Value invoice manager for excel activation key
'================================================================= ' KEY VALIDATION (hash + lookup in KeyStore) '================================================================= Private Function ValidateKey(ByVal plainKey As String) As Boolean Dim hash As String Dim storedHash As String '1️⃣ Basic format check If Len(plainKey) <> KEY_LENGTH Then Exit Function '2️⃣ Compute hash of the key (SHA‑256) and encode as Base64 hash = ComputeSHA256Base64(plainKey) '3️⃣ Look for the hash in the KeyStore sheet Dim ws As Worksheet, rng As Range Set ws = ThisWorkbook.Worksheets("KeyStore") Set rng = ws.Range("A:A").Find(What:=hash, LookIn:=xlValues, LookAt:=xlWhole) ValidateKey = Not rng Is Nothing End Function taxPct As Double
'================================================================= ' INITIALISATION (hide sheets, create tables if missing) '================================================================= Public Sub InitWorkbook() Dim wsInv As Worksheet, wsKey As Worksheet '--- Invoices sheet ------------------------------------------------ On Error Resume Next Set wsInv = ThisWorkbook.Worksheets("Invoices") On Error GoTo 0 If wsInv Is Nothing Then Set wsInv = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsInv.Name = "Invoices" wsInv.Range("A1:G1").Value = Array("Date", "InvoiceNo", "Customer", "Items", "Amount", "Tax", "Total") wsInv.Visible = xlSheetVeryHidden End If '--- KeyStore sheet ------------------------------------------------ On Error Resume Next Set wsKey = ThisWorkbook.Worksheets("KeyStore") On Error GoTo 0 If wsKey Is Nothing Then Set wsKey = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) wsKey.Name = "KeyStore" wsKey.Visible = xlSheetVeryHidden End If End Sub taxAmt As Double
'================================================================= ' GLOBAL SETTINGS – adjust as needed '================================================================= Private Const KEY_LENGTH As Long = 16 ' length of a plain key (characters) Private Const KEY_HASH_ALGO As String = "SHA256" ' only SHA256 is used internally
'================================================================= ' SHA‑256 → Base64 helper (uses MSXML for crypto) '================================================================= Private Function ComputeSHA256Base64(ByVal s As String) As String Dim xml As Object Set xml = CreateObject("MSXML2.DOMDocument.6.0") Dim hashObj As Object Set hashObj = CreateObject("System.Security.Cryptography.SHA256Managed") Dim bytes() As Byte bytes = StrConv(s, vbFromUnicode) ' UTF‑8 bytes Dim hashBytes() As Byte hashBytes = hashObj.ComputeHash_2((bytes)) 'Convert to Base64 Dim base64 As Object Set base64 = CreateObject("Microsoft.XMLDOM").createElement("b") base64.DataType = "bin.base64" base64.nodeTypedValue = hashBytes ComputeSHA256Base64 = base64.Text End Function
Public Sub ShowSearchForm() frmSearch.Show vbModal End Sub