A script to try opening a file until correct App Version is found

Posted on 2007-07-19
Last Modified: 2010-04-16
Good morning scripting experts

I've had an idea to an issue that fairly frequently arrises.  We use MYOB software and receive ledgers from a range of software versions.  We do have 3rd party software that helps us ascertain which version of the MYOB software we need to use to open the software.  Trouble is the 3rd party software doesn't always corrently identify the version of MYOB required to open the ledger file.  When this happens we then have to open all versions of MYOB sequentially and try the ledger and see if it is the correct version.  Quite tedious.  I have copied all MYOB application shortcuts to my desktop and can drop the ledger file onto each shortcut and see if it opens, if it does, happy days, if it doesn't then I try the next version of MYOB etc. Better but still tedious.

Soi thats the situation, how can you experts help me with scripting?

From a high level view it would be great if the script could

ask for the path to the ledger file
Try and open the 1st version of myob using the supplied ledger file
Ask the user if the ledger opened via a msgbox
If the ledger did open ok then end script otherwise try the next version of MYOB

Thanks for input on this one

Question by:robjeeves
    LVL 65

    Expert Comment

    Hi Rob,
    Before we go down that track, is there ANYTHING in the File Properties of the Ledger file that tells you anything about the MYOB version?  That's a long shot, but worth asking......

    Otherwise, we'll look at doing what you have mentioned....

    LVL 9

    Author Comment

    Afraid not. Well not overly.  The MYOB apps have different extetnions
    .dat = Accounts Plus
    .prm = Premiere
    .myo = Newest ledgers that include Accounts Plus and Premeire

    The file properties are empty for these files though, the 3rd party software once it sucessfully ascertains the version of MYOB writes the MYOB into file properties so subsequent opening are quicker.

    Talking of Long shots - Do you happen to be Rob from Dartford? I used to work with another Rob when I worked at Apple Computers a few years ago with the same name :-) Could it be you? :-)
    LVL 65

    Accepted Solution

    No, if the Dartford you are referring to is in England, that's quite a distance from Victoria, Australia. Sorry.

    OK, so try this VBS file and see how you go.  Note that you will need to change the arrMYOBs values to reflect your MYOB versions:
    Dim arrMYOBs
    arrMYOBs = Array( _
          "C:\Program Files\MYOB Accounting Plus\MYOB.exe", _
          "C:\Program Files\MYOB Accounting\MYOB.exe", _
          "C:\Program Files\MYOB First\MYOB.exe" _

    Dim objDialog, intResult, objFSO, objFile, strOption, objOption
    Const intForReading = 1

    Set objDialog = CreateObject("UserAccounts.CommonDialog")
    objDialog.Filter = "All Files (*.*)|*.*"
    objDialog.FilterIndex = 1
    objDialog.InitialDir = "."
    intResult = objDialog.ShowOpen

    If intResult = 0 Then
        MsgBox "No file was selected. The script will not continue."
    End If

    strFileName = objDialog.FileName

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("WScript.Shell")
    For intCount = LBound(arrMYOBs) To UBound(arrMYOBs)
          strCommand = """" & arrMYOBs(intCount) & """ """ & strFileName & """"
          'MsgBox strCommand
 strCommand, 1, False
          strResponse = MsgBox("Did the ledger file open correctly?", vbYesNo, "Did the file open correctly?")
          If strResponse = vbYes Then Exit For

    MsgBox "Done"


    LVL 9

    Author Comment

    re England: Yes it was England, oh well.

    Anyway, that is awesome mate.  Have tested it and it works sweet. Thanks so much
    LVL 65

    Expert Comment

    No problem.  We could probably go a little further and narrow down the programs it tries to open with, according to the file extension, if you're interested?  But that would only prevent two or three attempts.....and you can always change the order of the arrMYOBs lines, to emulate a "preference".



    Featured Post

    Highfive + Dolby Voice = No More Audio Complaints!

    Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

    Join & Write a Comment

    I have published numerous articles here at Experts Exchange that present programs/scripts written in a language called AutoHotkey. Each of those articles has a brief paragraph describing where to download the product and how to install it. I have al…
    How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
    Learn the basics of modules and packages in Python. Every Python file is a module, ending in the suffix: .py: Modules are a collection of functions and variables.: Packages are a collection of modules.: Module functions and variables are accessed us…
    The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

    754 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    20 Experts available now in Live!

    Get 1:1 Help Now