Quantcast
Channel: Excel Help Forum - Excel Programming / VBA / Macros
Viewing all articles
Browse latest Browse all 50057

Macro to Disable to close workbook after opening if machine ID doesnt mactch!

$
0
0
Hi. I've developed a workbook which i pretend to sell. Its a very complex workbook which has more than 700 worksheets and a lot of work invested. Has more than 100 macros across and i manage to establish a trial period based on this code:
Code:

Option Explicit
 
Private Sub Workbook_Open()
    Dim StartTime#, CurrentTime#
   
    '*****************************************
    'SET YOUR OWN TRIAL PERIOD BELOW
    'Integers (1, 2, 3,...etc) = number of days use
    '1/24 = 1Hr, 1/48 = 30Mins, 1/144 = 10Mins use
   
    Const TrialPeriod# = 30 '< 30 days trial
   
    'set your own obscure path and file-name
    Const ObscurePath$ = "C:\"
    Const ObscureFile$ = "TestFileLog.Log"
    '*****************************************
   
    If Dir(ObscurePath & ObscureFile) = Empty Then
        StartTime = Format(Now, "#0.#########0")
        Open ObscurePath & ObscureFile For Output As #1
        Print #1, StartTime
    Else
        Open ObscurePath & ObscureFile For Input As #1
        Input #1, StartTime
        CurrentTime = Format(Now, "#0.#########0")
        If CurrentTime < StartTime + TrialPeriod Then
            Close #1
            Exit Sub
        Else
            If [A1] <> "Expired" Then
                MsgBox "Sorry, your trial period has expired - your data" & vbLf & _
                "will now be extracted and saved for you..." & vbLf & _
                "" & vbLf & _
                "This workbook will then be made unusable."
                Close #1
                SaveShtsAsBook
                [A1] = "Expired"
                ActiveWorkbook.Save
                Application.Quit
            ElseIf [A1] = "Expired" Then
                Close #1
                Application.Quit
            End If
        End If
    End If
    Close #1
End Sub
 
Sub SaveShtsAsBook()
    Dim Sheet As Worksheet, SheetName$, MyFilePath$, N&
    MyFilePath$ = ActiveWorkbook.Path & "\" & _
    Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        On Error Resume Next '<< a folder exists
        MkDir MyFilePath '<< create a folder
        For N = 1 To Sheets.Count
            Sheets(N).Activate
            SheetName = ActiveSheet.Name
            Cells.Copy
            Workbooks.Add (xlWBATWorksheet)
            With ActiveWorkbook
                With .ActiveSheet
                    .Paste
                    '//N.B. to remove all the cell formulas,
                    '//uncomment the 4 lines of code below...
                    'With Cells
                    '.Copy
                    '.PasteSpecial Paste:=xlPasteValues
                    'End With
                    .Name = SheetName
                    [A1].Select
                End With
                'save book in this folder
                .SaveAs Filename:=MyFilePath _
                & "\" & SheetName & ".xls"
                .Close SaveChanges:=True
            End With
            .CutCopyMode = False
        Next
    End With
    Open MyFilePath & "\READ ME.log" For Output As #1
    Print #1, "Thank you for trying out this product."
    Print #1, "If it meets your requirements, visit"
    Print #1, "http://www.xxxxx/xxxx to purchase"
    Print #1, "the full (unrestricted) version..."
    Close #1
End Sub

This code above creates a log file that the macro uses at the opening to check if the file has trial period or not. What i need now is a code similar that creates a log file with the machine ID so then when this workbook opens checks if the machine id matches the one in the log file and if so let it open. Case not closes it right away. The log file stays hidden somewhere in the hard drive with a name i create (instructed in the vba code like the code above).

Is this possible to do?

Viewing all articles
Browse latest Browse all 50057

Trending Articles