July 2, 2007

Reading through text files in memory

Filed under: Scripting — Marcus Tettmar @ 10:20 am

Looping through a text file is commonly achieved with the ReadLn command in a loop, like the example in the help file:

Let>k=1
Label>start
ReadLn>c:\\\temp\\\test.txt,k,line
If>line=##EOF##,finish
MessageModal>line
Let>k=k+1
Goto>start
Label>finish

This uses a very simple loop and loops through the file one line at a time using the ReadLn command and a counter variable.

An alternative method is to read the entire file into memory and then put the lines into an array. This means seeking through the file becomes faster, and it becomes easier to change individual lines. Use the ReadFile command to read the entire file content into a variable:

ReadFile>c:\\\temp\\\test.txt,TheFileData

We now have a variable called TheFileData containing all the lines in the file. Each line will be separated by a Carriage Return, Line Feed combination (CRLF). So we can now split the file into an array using the Separate command, specifying CRLF as the delimiter:

Separate>TheFileData,CRLF,Lines

Lines_Count now tells us how many lines there are and we can access each line with Lines_1, Lines_2, etc. So here’s the new version of the full script:

ReadFile>c:\\\temp\\\test.txt,TheFileData
Separate>TheFileData,CRLF,Lines
Let>k=1
Repeat>k
  Let>CurrentLine=Lines_%k%
  MessageModal>CurrentLine
  Let>k=k+1
Until>k>Lines_Count

June 27, 2007

Office 2007 VBA Shell Bug?

Filed under: Automation, Scripting — Marcus Tettmar @ 3:12 pm

When trying to execute a third party application, such as Macro Scheduler, from VBA in Office 2007 using the Shell function the following error is returned:

“Invalid procedure call or argument”

Sometimes you might want to run a Macro Scheduler macro from Office using this method and get this error. Searching the web reveals many people reporting the same error when trying to run other applications, including other Office apps! E.g.:

Shell “c:\my macros\macroA.exe”

I suspect there’s an issue with spaces in the path but trying to embed extra quotes with chr(34) doesn’t seem to help. The Shell function also doesn’t provide a way to specify command line parameters other than including them in the entire command string.

The solution is to use the ShellExecute API function. Declare the function in the General Declarations section of your VBA module using this code:

Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Then you can use the function as follows:

ShellExecute 0&, “”, “c:\program files\macro scheduler\msched.exe”, “calculator”, “”, 1

This code runs the Calculator sample macro in Macro Scheduler.

To run an application with no command line parameters leave the fourth parameter empty:

ShellExecute 0&, “”, “c:\my macros\mymacro.exe”, “”, “”, 1

May 18, 2007

First Winner of Scripts & Tips Competition

Filed under: Announcements, Automation, Scripting — Marcus Tettmar @ 1:19 pm

We have our first successful entry to the Scripts & Tips 10 Year Anniversary Competition. Robert White sent in this excellent Cookie Monitor script. It’s a nicely written script which is both very useful and also demonstrates effective use of a non-modal dialog and other scripting features such as looping, reading a list of files, string manipulation, and reading from the registry. The beauty of this script, as a demonstration script, is you can run it as-is and it will work on your machine without any modification. Grab the script here.

We’ve rewarded Robert with an extra year of upgrade protection. Well done Robert, and thanks for the script!

May 15, 2007

Post to Scripts & Tips and Win Free Upgrades

Filed under: Announcements, General — Marcus Tettmar @ 8:12 am

We’re running a competition where you can win your next upgrade free if a script you submit is chosen for inclusion in the Scripts & Tips archive. We’re looking for useful scripts and examples which can be added to the Scripts & Tips archive and will benefit others. Any scripts that are accepted for inclusion will be rewarded with a free year of upgrade protection. Find out more here and get scripting!

May 3, 2007

Celebrations All Round

Filed under: General — Marcus Tettmar @ 7:53 am

So a day after celebrating our 10th anniversary I’m pleased to also congratulate Nagarsoft on their 1st year in business. Nagarsoft have achieved much in their first year, with the launch of their superbly crafted Direct Access:

Direct Access speeds up your personal computing experience by reducing time consuming, repetitive tasks through the use of abbreviations. Type an abbreviation in any application and Direct Access will detect it and perform the task you desire.

And by the way – Macro Scheduler customers can get 25% off Direct Access. You’ll see details when you log in to the registered download area.

Here’s wishing Andrea at Nagarsoft many more years in business. I look forward to being able to celebrate his company’s 10 year anniversary with our 20th!

May 1, 2007

Macro Scheduler 10 Year Anniversary Offer on Bits du Jour!

Filed under: Announcements, General — Marcus Tettmar @ 12:01 am

Today, 1st May 2007, Macro Scheduler is on sale at Bits du Jour.

Ten years ago on 1st May 1997 we sold our very first copy of Macro Scheduler. Back then there was only one edition of Macro Scheduler and it sold for just $40. Today, for one day only, you can buy the latest version of Macro Scheduler Standard for the same price! That’s a huge discount of 58%! And the discount is valid for Professional and Enterprise versions too.

58% Off Macro Scheduler Today Only

Get your discounted copy now – use coupon code BDJ10YR.

The mathematically astute amongst you may have noticed that the discount is actually 58.76%. That is the percentage needed to get the price of Macro Scheduler Standard down to an even $40 – the price in May 1997!

Thanks to Andrea Nagar of Nagarsoft for the banner!

April 30, 2007

Macro Scheduler 9.1 Released

Filed under: Announcements — Marcus Tettmar @ 8:41 am

Coinciding nicely with our 10 year anniversary, Macro Scheduler 9.1 was released today. I guess version 10 would be a more apt label, but this is not a major release – more a maintenance update with a few bonus extras thrown in:

Fixes:

  • Possibly fixed random “Cannot open Clipboard” errors
  • Fixed an issue with dialog designer toolbar button in editor sometimes getting invalid content
  • Select All (CTRL+A) now works in dialog memo fields
  • Fixed CTRL-A (Select All) in Code Snippets editor
  • Fixed WaitWindowOpen/Closed to work with handles as per docs (WIN_USEHANDLE)
  • New stuff:

  • Ability to include bitmap data for dialog images and buttons in scripts
  • Script now creates object handle variables: DialogName.Handle, DialogName.ObjectName.Handle after Dialog block is executed
  • Added DIALOG_CHANGE OnEvent handler:
    OnEvent>DIALOG_CHANGE,DialogName,ObjectName,Subroutine
  • Dialog Designer toolbar button in editor will now edit dialog if cursor on first line of a dialog block
  • Improved RetrievePOP3 to decode attachments and output body text parts.
  • Deleting macros will now delete to recycle bin
  • Being able to include dialog bitmap data inside scripts instead of referring to external image files will make it easier to distribute compiled dialog macros (yes, I know how much one or two of you have wanted this!). The new DIALOG_CHANGE event will also make life easier when writing scripts that need to respond to the user making selection changes on dialogs. And having the object handles exposed as soon as the dialog is created will reduce code complexity for working with API functions that manipulate the objects directly. So I think those of you who use Macro Scheduler to build distributable solutions with their own user interfaces will appreciate this release.

    Trial Download | Registered Downloads

    April 2, 2007

    Macro Scheduler Saves the World 27,000 Years!

    Filed under: General — Marcus Tettmar @ 4:53 pm

    In case you didn’t already know it, Macro Scheduler will be 10 years old this year. In fact, I had a quick look through our old sales records the other day and discovered that we sold the first ever copy of Macro Scheduler on 1st May 1997. So 1st May this year will be a special day. We’ve got a few things up our sleeves so keep posted for more news.

    In the mean time Andy Brice, of PerfectTablePlan.com, suggested it might be fun to work out how much time Macro Scheduler has saved people in total since its launch in 1997. So we pulled some figures from our sales database, made a few conservative estimates, consulted our marketing people and ran a few number crunching macros and discovered that in total Macro Scheduler has saved approximately 27,000 years in lost productivity over the last 10 years.

    In that time you could have built:

    • 6875 Golden Gate Bridges, or
    • 3928 Channel Tunnels, or
    • 5500 Wembley Stadiums, or
    • 1350 Great Pyramids of Giza.

    [Although to be fair Herodotus estimated you’d need 100,000 workers to build the Giza Pyramids in 20 years]

    Seriously. Sure, we had to make a few estimates but we’ve been conservative. This is based on our most complete year on year user-base figures and an assumption that on average each user saves 2 hours per working day. We’ve assumed a working day is 8 hours and a working year is 210 days. While some people may use the software on a more ad-hoc basis we know many run dedicated Macro Scheduler workstations running 24 hours a day. Anyway, we need something to work from, so we’ve chosen an average figure of 2 hours per day. But even if you halve that it’s still a pretty impressive outcome. And it could be more – that’s only working days and our user base figures most likely under-read due to various custom licensing arrangements and unlimited user licenses etc.

    Hey, it’s just a bit of fun 🙂

    March 14, 2007

    Hijacking Spammer

    Filed under: General — Marcus Tettmar @ 8:00 am

    Some dirty little spammer appears to have used valid mjtnet.com email addresses for the reply-to address of a recent spamming campaign. We’re getting dozens of mail failures for emails we didn’t send out, many of which are advertising a certain men’s pharmaceutical product. Nothing to do with us.

    What can be done? Not a lot. We already have SPF records set up for our domain. SPF defines which mail servers are allowed to send mail for a specific domain. Unfortunately the vast majority of mail servers don’t bother to do SPF checks. Any that do will be rejecting those spam messages as they were sent from a different mail server to the one our domain permits to be used. But most won’t.

    So I guess all we can do is wait for this to die down, filter out the mail failures and hope that this recent hijacking doesn’t get us unfairly blacklisted!

    February 27, 2007

    Kudos on Microsoft

    Filed under: General — Marcus Tettmar @ 12:48 pm

    Nice to see Macro Scheduler listed on microsoft.com in The Vista Application Compatibility list:

    http://support.microsoft.com/default.aspx/kb/933305

    Feels quite an achievement that we are one of the first 800 apps to be listed. On a global level that feels quite good and I believe demonstrates our commitment to future proofing our software and to staying several steps ahead of the competition. No other automation software is listed.