Import Prices Script for Quicken

[This page is the old archived posting. The current page is here: /tech/import-prices-script-for-quicken/.]

Quicken is a package that works pretty well, but the manufacturer has a tendency to periodically block functionality.

For example, Quicken 2006 has been unable to download updated stock prices since April 2009. Quicken 2006 itself installs on even the latest Windows 10 (2016) just fine. [As an aside, it is just amazing that Windows 10 has kept compatibility alive for old software - Quicken 2006, as well as the SendKeys method used by the script below! Kudos to Microsoft!]

There is certainly no technical decision to disable automatic stock price updates - it is just a marketing push, so make people upgrade even if they do not desire to move to a new version.

Quicken does have a manual "Import Prices" command seen when viewing the Portfolio. Therefore, it is not too hard to write a script that will download current prices, and import them into Quicken.

It is a .WSF file, a Windows Shell Scripting program. It has been tested to work on Windows XP, Windows Vista as well as Windows 10 (2016), and is available in source code form.

The script looks up historical and current prices for a list of symbols, and stores the prices in the format Quicken needs. Optionally, it can automate the import of the prices in Quicken by using Windows automation SendKeys method.

Archive with script and readme: [2015-04-09]
Previous release: [2009]

And here are links to look at the key files: QImportP.wsf, the README, and the ChangeLog file.

Prices are looked up using the Yahoo Finance web site. Quicken manual import prices only accepts date and price for a symbol, it cannot import volume and other data.

The script does try to automate loading of the price data into Quicken, but the mechanism of using SendKeys is very fragile, it may not always work - keys may get to the wrong window, or at the wrong time.

Version 0.3 of this package added support for non-US users, based on the code given in a comment (#5535), the /dmy and /div100 options provide that support. From what has been reported elsewhere on the web, shares and mutual fund price downloads in UK are priced differently - shares in pence, funds in pounds (or vice-versa?). So QImportP provides the /div100 option which can be used when needed.

[This page is the old archived posting. The current page is here: /tech/import-prices-script-for-quicken/.]

The QImportP package is placed into Public Domain.


Brilliant script for my

Brilliant script for my ailing version of Quicken - Thank You ;-)

I work in GBP and use UK format dates so I had to do some tweaks;

// items[4] is in pence and my import is in pounds
// so need to divide by 100 (rounded to decimals)
// date format required dd/mm/yyyy
ret += symb + "," + items[4] + "," + ymd[2] + "/" + ymd[1] + "/" + ymd[0];

// the date format returned is "M/dd/yyyy" with quotes so here's an extra process
// which allows me to easily switch month and day

// remove quotes
var new_line = line.replace(/\"/g,"");
ret = items[0] + "," + items[1] + "," + ymd[1] + "/" + ymd[0] + "/" + ymd[2];

Also, I don't use auto run in quicken but like to import the prices so after the script opens the output file I did;
// Quicken format = 1st line contains specific value

And before closing I did;
// Quicken format = specific value at end of file

Thanks for the code, it is

Thanks for the code, it is now incorporated into the script, would be great if you could test it out.
Version 0.3 (or later) supports it, info at the main post

Ok - Sorry for the delay ...

Ok - Sorry for the delay ... I'll check the new version out and report back soon.

Thanks again for the script, all that's missing is a "PAYPAL" please donate button ;-)

... v0.3.0 with the /div100

... v0.3.0 with the /div100 and /dmy options works perfectly for me in the UK ;-)

I tried the "/automate" and ran into a few problems;
when %temp%=C:\Documents and Settings\User\Local Settings\Temp, windows scripting expands this to be C:\DOCUME~1\USER\LOCALS~1\Temp
It seems sendkeys gave up with the "~" (or treated it as a special key) and no import was made.

Solved simply by putting SET TEMP=C:\temp in the .bat file.

Thanks once more - This script has really saved me a lot of time and hassle with the "Sunset" policy of Quicken.

Now, I no longer use Quicken

Now, I no longer use Quicken Home Inventory but it is interesting to note that you can apply some settings to display the QHI option, or not .... why is this useful at acplace for the QImportP script ? Well wouldn't it be nice if you could run the script with "/automate" directly from a quicken menu ...
Put your QimportP .bat and .wsf in a directory such as C:/QImportP.
Locate the QUICKEN.INI file (Take a backup copy just in case) and add the following;
1. Where it says "AddApps" , ensure it includes the value ";QHI" (eg. AddApps;QHI).
2. Just before the [CONFIGURATION] section add the following lines;
MenuString=Doesnt seem to make any difference
When you start quicken, you should see the QHI menu, select it and hey presto, ot runs the QImportP load ;-)
[ Note.. I haven't found a way to change the menu name or location ... yet]

Cool! That last tip is great

Cool! That last tip is great - I found that QFL could also be used - Quicken Family Lawyer.
In Quicken 2006, both QHI and QFL show up under Property and Debt file menu.
Also - using the "Customize" button, a icon can be added to the icon bar, so clicking on the icon will run end up running the script. The label under the icon can also be changed - when in Customize, click on icon name and then on Edit icon, and then the "Quicken Family Lawyer" can be changed to QImportP for example. Note that the menu item can't be edited, it will still say "Quicken Family Lawyer". But the icon displayed on toolbar just below the menus will have the correct test.

Quicken.ini is hard to find - found it here on my box:
C:\Documents and Settings\All Users\Application Data\Intuit\Quicken\Config
Will be either there (All Users) or specific user name if not installed for all users.

; names QHI or QFL can be anything, only the IntuitID matters
; it is 1007 for QHI, and 1023 for QFL
; and the ExeName is what will be invoked

Hmm... I thought I running a

Hmm... I thought I running a .bat file from the ExeName worked fine, but when I tried it today, it failed, Quicken reported error about program not installed correctly. The bat script works fine from DOS prompt.

So then I used Bat-To-Exe-Converter to convert my customized QImportP.bat to QImportP.exe, put that in ExeName, and now it works fine. Using the Customize tip, have the Icon named QImportP too.
But somewhat strange that the .bat script stopped working at this time...

Not sure, but I think the

Not sure, but I think the "InformExec=False" might be needed to run the .bat file

“InformExec=False” might be

“InformExec=False” might be needed to run the .bat file

No luck, tried, FALSE, TRUE, and no line at all, for InformExec. But .bat file always fails, Quicken reporting "unable to run program, program not installed correctly".
Just changing the extension of the same script to .cmd makes it work. InformExec=TRUE works best, seems it prevents the flash of the DOS window that executes the script.

I missed the ^FTSE index

I missed the ^FTSE index update which was on my watch list so I decided to add it to the list for qimportp .... It seems the yahoo site quotes the ^FTSE in Pounds but shares are in pence (It probably does this for indexes in $ and EURO too).
That means the /div100 works for my shares, but makes ^FTSE index out by a factor of 100 :-(
Solution 1: Make the batch file run once with /div100 for the share import and then a 2nd time for the index without the /div100
Solution 2: Another code change (probably particular to me so I don't expect the master script to change);
if (DIV100)
{if ( symb.substring(0,1) != "^" )
items[4] = Math.round(parseFloat(items[4])*100)/10000;
if (DIV100)
{if ( items[0].substr(1,1) != "^" )
items[1] = Math.round(parseFloat(items[1])*100)/10000;

Thanks AC and Adrian for your

Thanks AC and Adrian for your work on this script which seems ideal to overcome the download problems with share prices in the UK. Incidentally, I have noticed that the currency rate download has also now been stopped.

I am using Vista 64, and QImportP downloads share prices correctly into the temporary folder, however it will not import them into Quicken. It complains that it cannot find Quicken, and asks whether the path is correct.

Quicken is at C:\Program Files (x86)\Quicken\qw.exe so I have changed the line setting the path in QImportP.wsf from:

var QEXE_DEFAULT = '"c:\\Program Files\\Quicken\\qw.exe"';


var QEXE_DEFAULT = '"c:\\Program Files (x86)\\Quicken\\qw.exe"';

but get exactly the same message about not being able to find Quicken. Can some please advise where I am going wrong? Thanks.

> Vista 64 problem Can you

> Vista 64 problem

Can you try starting Quicken before running QImportP?

The automation seems to print two error messages -
first, when it can't start quicken
message("Error: Could not run Quicken at " + qexe + ", " + e.description, ERROR_LEVEL);
What was printed after the , in the message - the description and error_level?

second, if quicken is already started and it can't find it, it reports
message("Error: 2: Unable to activate Quicken application - not sending keys", ERROR_LEVEL);

does that show up?

Thanks Anonymous for your

Thanks Anonymous for your reply. Unfortunately, I already had Quicken running before executing the script.

The script outputs a message: "Start Quicken and import prices into Quicken"

and then Windows reports: " Windows cannot find 'Quicken'. Make sure you typed the name correctly and try again."

It hangs at this point until "OK" is hit. The prices are downloaded correctly but not written into Quicken.

I get neither of the messages that you list.

I suspect the problem is caused by this line in the script:

var key = "HKLM\\SOFTWARE\\Intuit\\Quicken\\ExePath";

because there is no such entry in the registry when Quicken is installed in Vista 64, however, I cannot decide which is the correct registry entry out of the many related to Quicken.

Comparing Quicken in Vista 64 to Quicken in Vista 32 shows the Quicken registry entries to be very different. Any ideas which is the relevant registry entry?

Hmm... unless run like

Hmm... unless run like this:
cscript QImportP.wsf /help
it does not seem that the “Start Quicken and import prices into Quicken” should ever be printed out...

Vista may be a complete different beast...
Even if the registry key does not exist (it should be a key that contains the path to the quicken executable), it uses the default for QEXE_DEFAULT - which I believe you changed to the vista path.

One final thing to try may be to delete the quicken start - since you are running quicken before anyway. In the doAutomation function, try deleting all the lines before the // check.
And, run the command from a DOS cmd.exe window (if not already doing so) - may see some better messages.

Thanks very much Anonymous

Thanks very much Anonymous for your suggestions. I have now had some success - of sorts.

Following your suggestion, I converted the following lines in the doAutomation function to comments:-

// var qexe = '"' + getQEXERegVal(QEXE_DEFAULT) +'"';
// // Run will start application, or do nothing if app is already running
// try {
// WSH.Run(qexe, 1, false); // true to wait here, false to continue in this script
// } catch (e) {
// message("Error: Could not run Quicken at " + qexe + ", " + e.description, ERROR_LEVEL);
// return false;
// }

I still get the same error messages as before, but after clicking OK the script continues and successfully imports the prices into quicken. Disabling the auto-open of Quicken is not a problem for me because I use a password for Quicken anyway.

I am not sure whether this helps in any way, but In an attempt to eliminate the error and the need to "OK" the message, I tried changing

var QEXE_DEFAULT = '"c:\\Program Files (x86)\\Quicken\\qw.exe"';

back to

var QEXE_DEFAULT = '"c:\\Program Files\\Quicken\\qw.exe"';

but still got the same error - however it still imported the prices.

It appears to be a problem related to a 64 bit OS because I believe the error message - ” Windows cannot find ‘Quicken’. Make sure you typed the name correctly and try again.” - is output by Windows and not by the script. What I cannot find is which script command is now causing Windows to access Quicken.

Any further ideas? I very much appreciate your help on this.

> What I cannot find is which

> What I cannot find is which script command is now causing Windows to access Quicken.
> Windows cannot find `Quicken'

This has to be the QTITLE variable - it is looking for a window with that title.
Maybe Vista does not support the call in appActivate to WSH.AppActivate(title) ...?
Or try changing QTITLE if the title is really different.

Anonymous, thanks gain for

Anonymous, thanks gain for your help.

I have discovered that the error message - ” Windows cannot find ‘Quicken’. Make sure you typed the name correctly and try again.” - occurs in Vista 64 and in Vista 32. After some more searching I have found the cause - the line:-

Start Quicken and import prices into Quicken

In the Windows batch file, QImportP.bat, should be a comment line, and was corrected to:-

@REM Start Quicken and import prices into Quicken

For users of Quicken under Vista 64 the other changes are to the QImportP.wsf script file and are as follows:-

var QEXE_DEFAULT = '"c:\\Program Files\\Quicken\\qw.exe"';
Changed to:
var QEXE_DEFAULT = '"c:\\Program Files (x86)\\Quicken\\qw.exe"';


var qexe = '"' + getQEXERegVal(QEXE_DEFAULT) +'"';
// Run will start application, or do nothing if app is already running
try {
WSH.Run(qexe, 1, false); // true to wait here, false to continue in this script
} catch (e) {
message("Error: Could not run Quicken at " + qexe + ", " + e.description, ERROR_LEVEL);
return false;

Changed to:-

// var qexe = '"' + getQEXERegVal(QEXE_DEFAULT) +'"';
// // Run will start application, or do nothing if app is already running
// try {
// WSH.Run(qexe, 1, false); // true to wait here, false to continue in this script
// } catch (e) {
// message("Error: Could not run Quicken at " + qexe + ", " + e.description, ERROR_LEVEL);
// return false;
// }

These changes remove the automatic launching of Quicken, which as a consequence, must be open before the script is run. Unfortunately I was unable to find the reason for this script not working in Vista 64.

Now to find a way of downloading UK Funds and updating Quicken......

> Vista changes.... Thanks

> Vista changes....

Thanks - will include these in the next update.

If you get the chance, could you also see if Vista supports the section in README:
"Adding a button on the Quicken Toolbar"
(use .cmd instead of .bat for the QImport script)

And - I'm confused as to the QEXE_DEFAULT issue. If possible, could someone running Vista try this test - save this file as test.wsf and run it in a DOS window as
cscript test.wsf
<job id="TESTING">
<?job error="true" debug="true"?>
<object id="WSH" progid="WScript.Shell"/>
<object id="FSO" progid="Scripting.FileSystemObject"/>
<script language="JScript">
var qexe = '"c:\\Program Files\\Quicken\\qw.exe"';
var qexe = '"c:\\Program Files (x86)\\Quicken\\qw.exe"'
try {
WSH.Run(qexe, 1, false); // true to wait here, false to continue in this script
} catch (e) {
WScript.Echo("Error: Could not run Quicken at " + qexe + ", " + e.description);

Thanks AC for the reply. I

Thanks AC for the reply. I have run your "test" script in a DOS window (under Vista64) and get:

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.


D:\>cd temp

D:\Temp>cscript test.wsf
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.

D:\Temp\test.wsf(2, 33) Windows Script Host: The value for the attribute is not


Will next try running from a Quicken toolbar.

I have found the error in

I have found the error in test.wsf
I have changed:
” to " and ‘ to ' in all lines

The script now runs, and opens Quicken without any error messages.

The modified script is:-

var qexe = '"c:\\Program Files\\Quicken\\qw.exe"';
var qexe = '"c:\\Program Files (x86)\\Quicken\\qw.exe"'
try {
WSH.Run(qexe, 1, false); // true to wait here, false to continue in this script
} catch (e) {
WScript.Echo("Error: Could not run Quicken at " + qexe + ", " + e.description);

It is obviously a problem

It is obviously a problem with different chacter sets being used for HTML and a text file - the text I pasted in the last reply was changed again.

In the script I changed the double quotation marks to the standard quotation mark, and the single quotaion mark to an apostrophe.

After successfully using the

After successfully using the "test" script, I took out the call to "getQEXERegVal" in the "QImportP" script - which now works. Something with that function is obviously not working with Vista.

AC After more testing I


After more testing I have been able to get the original batch and script files to work in Vista 64 and 32, with only one change to the original script.

For Vista 32 the line:
var QEXE_DEFAULT = '"c:\\Program Files\\Quicken\\qw.exe"';
must be changed to:
var QEXE_DEFAULT = "c:\\Program Files\\Quicken\\qw.exe";
and for Vista 64 to:
var QEXE_DEFAULT = "c:\\Program Files (x86)\\Quicken\\qw.exe";

Having the path enclosed in quotes and apostrophes produces a path in double quotes which is the root of the problems described in my previous posts.

The coding to get the Quicken path from the registry can be left as the original. However, the script cannot find Quicken from the registry and therefore uses the default path - as above (the Vista registry structure for Quicken must be different from that in XP - assuming that this works in XP).

Remove the section of script for obtaining the path to Quicken from the registry, and rely on the current default method - it works well. Pass an argument from the batch file to instruct the script to select the 64bit or the 32bit path.

Is there a way of sending a password to Quicken?

To complete the catalogue of changes: -
In the Windows batch file "QImportP.bat", one of the lines should be a comment line, and was corrected to:
@REM Start Quicken and import prices into Quicken

I have not tried to modify Quicken.ini so that the prices can be downloaded and imported from the Quicken menu. Instead I have put a shortcut to QImportP.bat, called "Quicken Share Price Import" into the Windows Start menu, and with Quicken open, (because I use a password) go to Start > All Programs > Quicken Share price Import. Simple, works well, and avoids modifying Quicken.

1: On the '" ... "' issue -

1: On the '" ... "' issue - can't do that for XP - just double or single quotes fails to start up Quicken. Strange that Microsoft changed the handling of quoted strings between XP and Vista...
So the fix is to use only " ... " for Vista and remove the single quote from QEXE_DEFAULT.

2: I wonder if the JScript interface has a way to find out if the OS is Vista, or 32-bit, or 64-bit. Then the program could automatically use the default variables. The registry method is useful for those who do not install in a standard path, so I will need to look into that on a vista machine. Does searching for "qw.exe" in Vista (use regedit to bring up the registry - carefully! - do not save any changes!) not bring up any Keys?

3: Sending a password from a script is probably not a good idea because of security issues. I tried it, and it did not work, the code would be:
After this line inside the if: appActivate(QTITLE, 20); .....

passwd = escapeSendKeys("REAL PASSWORD!!!!");
appSendKeys(passwd, QTITLE); // enter passwd
appSendKeys("{ENTER}", QTITLE); // hit Ok

4: The Windows Start idea for this script is quite good - I'll put that in the readme, since it avoids having to edit Quicken.ini, and is just as good.

AC Thanks very much for


Thanks very much for the information and your help.

1. The ‘” … “‘ issue. It is indeed strange why Vista is different. Having 2-pairs of quotes is only a problem for the registry lookup of the Quicken path. 2-Pairs of quotes work OK with the default path.

2. Searching the net does suggest there are ways of identifying the OS - unfortunately my knowledge of JScript is too limited for me to apply it.

3. Searching the Vista 64 registry for "qw.exe" brought up dozens of matches as below:

HKEY_CLASSES_ROOT\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_CLASSES_ROOT\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_CURRENT_USER\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_CURRENT_USER\Software\Microsoft\IntelliType Pro\AppSpecific\qw.exe
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\30495de9_0
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\edf7434a_0
HKEY_CURRENT_USER\Software\Netscape\Netscape Navigator\User Trusted External Applications
HKEY_CURRENT_USER\Software\Netscape\Netscape Navigator\Viewers
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\qw.exe
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Microsoft\IntelliType Pro\AppSpecific\qw.exe
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\30495de9_0
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Microsoft\Internet Explorer\LowRegistry\Audio\PolicyConfig\PropertyStore\edf7434a_0
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Netscape\Netscape Navigator\User Trusted External Applications
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000\Software\Netscape\Netscape Navigator\Viewers
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000_Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
HKEY_USERS\S-1-5-21-1709783314-3825605714-3583000038-1000_Classes\Wow6432Node\Local Settings\Software\Microsoft\Windows\Shell\MuiCache

From the above list the following is the most likely:-

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\qw.exe
and the equivalent Vista 32-bit version:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\qw.exe

Using the key in the script, as below, does appear to correctly return the path for qw.exe :-

var key = "HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\App Paths\\qw.exe\\path";

There are no error messages from the script. However, it is not reliable and always opens Windows Explorer showing the Quicken program directory, which has then to be closed manually. The default path is 100% reliable and does not open Windows Explorer. Is there a more likely registry key to try?

4. You are absolutely correct about the security issues of automatically opening Quicken when it is password protected. There is not any point in having password protection if another application can open the file withou a password. I tried your code but, as you say, it did not work anyway!

Hello - I do love this script

Hello - I do love this script but unfortunately after move to Win7 64bits + Quicken 2010 I cant use anymore.
I'm got the following message:
Error: failed to find Quicken Registry Value HKLM\SOFTWARE\Intuit\Quicken\ExePath, Invalid root in registry key "HKLM\SOFTWARE\Intuit\Quicken\ExePath. Will try default value "c:\Program Files\Quicken\qw.exe"
Error: Could not run Quicken at "c:\Program Files\Quicken\qw.exe"

Is there a chance to have a alternative version for 64bits

Leo See post 14 for the 2


See post 14 for the 2 changes required. One change to the script, and one correction to the batch file.

Works fine for me on Vista 64 and should work with Win7

Super! Worked as expected.

Super! Worked as expected.
Thanks a lot for your support!


Version 0.5 now available,

Version 0.5 now available, should support both Vista and Windows 7 though not tested. Thanks to comment above for the tips on fixing it.

AC Thanks very much for

Thanks very much for incorporating all the changes required to import share prices under Vista/Win7 32 & 64 bit into version 0.5.
I can confirm that the script works with Vista 32 & 64 bit.

AC For UK Quicken users your

For UK Quicken users your QImportP script is extremely important and useful.

The last release of Quicken in the UK was Quicken 2004, since then there have been no program updates or support from Intuit. The Share price download facility continued to work in the UK until December 2008, and the currency conversion download worked for several months longer.

Since the end of 2008 those wanting to update portfolio share prices have had to do it manually, a very tedious process. Your script is therefore very valuable in the UK, especially since there is no alternative personal finance application with all the features of Quicken.

Although your script will download & import all UK share prices (provided the share symbols include the .L suffix - for example GSK.L - in Quicken and in the .CMD file) it will not download UK Fund prices. The UK fund prices do not appear to be in the Yahoo database:

After some searching I found the UK Fund prices at the following address:

and have added a few lines to the script which look up the last prices and write them onto the end of the .CSV file. For those wishing to modify the script and download UK fund prices I added the following lines between the two rows of Asterisks :-

// get current prices for all symbols, and write to output file
    var urlcurr = new UrlCurrForSymbols( symbols );
    message("URL=" + urlcurr, INFO_LEVEL);
    WinHttpReq.Open("GET", urlcurr.toUrl(), false);
    if (WinHttpReq.Status == HTTP_STATUS_OK) { // 200
        message(WinHttpReq.ResponseText, DEBUG_LEVEL);
        var lines = WinHttpReq.ResponseText.split("\r\n");
        for(var i in lines) {
            var out = urlcurr.toQuicken(lines[i]);
            if (out) {
    } else {
        error = true;
        message("Error: could not retreive latest prices for symbols="+symbols, ERROR_LEVEL);
        message("  Code " + WinHttpReq.Status + " retrieving " + urlcurr.toUrl(), ERROR_LEVEL);
// ***** Get L&G Fund price - JEF lines added down to and including outFile.WriteLine(jefcol) *****
	WinHttpReq.Open("GET", "", false);
	    var jefline = WinHttpReq.ResponseText;
	    var jefitem = jefline.split(",",5);
	    jefitem[0] = jefitem[0];
            jefitem[1] = Math.round(parseFloat(jefitem[1])*100)/10000;
            ymd = jefitem[3].split("/", 3);
            jefitem[2] = ymd[1] + "/" + ymd[0] + "/" + ymd[2];
	    jefcol = "" + jefitem[0] + ", " + jefitem[1] + ", " + jefitem[2];
    // done with file and http
    // WinHttpReq.Close(); // wrong call..?
    return !error;
} // getPrices()

This script addition is only for a single fund, "Legal & General UK Index", but could be easily changed to a different fund and more funds added.

This "UK Fund URL" downloads Legal & General fund (L&G UK Index Trust (R) Inc - GB0005141709GBP) last price with date.

The .CSV file has the Symbol in Col 1, Last Price in Col 2 (in pence), Time in Col 3, the date in Col 4 (in MM/DD/YYYY format), and the price change (in pence) in Col 5. Before importing, Quicken requires the data to be processed as follows:

Conversion of the price to £'s
Conversion of date to DD/MM/YYYY
CSV file reorganised to show: symbol in Col 1, Price in Col 2, and date in Col 3

Someone with more programming skills than I have, would be able to modify the Script so that the UK funds could be specified in the .CMD file.

Unfortunately the modified

Unfortunately the modified script referred to in post 26 that reteives UK Fund prices from Yahoo Finance UK no longer works! Yahoo Finace UK have ended their Funds service for "several months". They state they will be back in 2010 with an "improved service".

A new download source for UK fund prices is required. Anyone know a free one?

Thank you. Really nice. I

Thank you. Really nice.

I had one (self caused) problem - I had the script in a folder called Quicken Price Script, that was open in Windows explorer. Since the script is looking for any window that starts with QUICKEN, it was randomly failing by latching on to the explorer window. Renaming the folder fixed the problem.

I have used Quicken 2000 for

I have used Quicken 2000 for a number of years and had ended up entering Share, Investment Trust and UT prices manually. I offer the method below which I now use regularly. My Quicken 2000 is running on XP SP3

For Share & Investment Trust Prices:
Download and install Netstock from Version I have is 1.78.1. (I haven't tested it with either Vista or Windows 7)
Go to Settings->Data Preferences and check Yahoo as the Quote Source (not UK Yahoo or PC Quote). This gets UK Share, UK Investment Trust and US Share prices from the US Yahoo Finance site. Set the date format to DD/MM/YY
Go to Settings->Stocks and enter the Ticker symbol as per the Yahoo web site e.g. Lloyds is LLOY.L, United Utilities is UU.L
Click on Add and build the table with Share and Investment Trust Prices. You can also add US stocks
Go to Settings->Network Settings and make sure Automatic updates is checked. Set the Delay to 60 (which updates the values every minute or longer if you want)
Once the table is built, Netstock checks and report the prices (provided you are connected to the Internet of course!)
To export the prices to a .txt file, click on File->Quicken Export and specify the location where you want to store the file. The values are recorded in CSV format and by default, it's named prices.txt
If you have any US stocks, the prices are recorded in $ whereas Quicken wants them in cents. Just edit the relevant price in the .txt file and save it
Make sure that the Ticker symbols in Quicken agree with those in the .txt file
In Quicken, go Features->Investing->Set Up Online Quotes and make sure the prices you want to update are checked
You can then use the Quicken “Import Prices” function in the Portfolio View with File->File Operations->Import Prices and specify the full path name where the prices.txt file is located

For Unit trusts:
I record my holdings in the Interactive Investor web site ( although there are others that will provide this information and update it daily. Just one Unit is OK to get the price
I have created a .txt file in the CSV format "ticker", "price", "date" for my holdings e.g. Jupiter China Acc looks like "RWCHAC", "80.05", "12/08/2010". The file can be named e.g. UTPrices.txt
The Ticker for each holding in this file is the same as used by Interactive Investor although you can create a Ticker that doesn't conflict with the Share Ticker
Make sure that the last line entry is terminated with the Enter key or Quicken will ignore it
I have added a description to each line for reference when updating which Quicken ignores as it doesn't have " " marks
I then manually update the prices. Doesn't take long!
For the date change, I use the Find/Replace All command to set the date I want
Then import the file in the same way as the share file

A bit manual but much better than entering the prices through Quicken's menu tree. Haven't yet found a UK source to download UK fund prices

Hi, I tried your method to

I tried your method to download share prices to Quicken 2004. prices come up in pence in Netstock which Quicken takes to be £'s and suddenly I'm very rich. Have you a way round this other than editing the quicken or "prices" values?

Hi Rothers, I'm using

Hi Rothers,

I'm using Quicken 2000 which uses pence for Shares, Unit Trusts and Investment Trusts so have not come across this issue. I've had a look at my version but I cannot see if the currency units can be changed somewhere.

I think the quickest way around this is to edit the .txt file values before uploading to Quicken.

Thanks for your interest. I

Thanks for your interest. I have done as you say and it works OK. I have also divided the number of shares by 100 so that the value as reported by Netstock is correct. Well thats all my millions gone in a day.

UK fund prices are available

UK fund prices are available again in Yahoo. The prices are not updated daily, about twice a week. I have modified AC's script to include the download a single single UK fund - see my post 26 for details.

The following shows the lines to be added and their position AC's script (missing from post 26):-

if (WinHttpReq.Status == HTTP_STATUS_OK) { // 200
message(WinHttpReq.ResponseText, DEBUG_LEVEL);
var lines = WinHttpReq.ResponseText.split("\r\n");
for(var i in lines) {
var out = urlcurr.toQuicken(lines[i]);
if (out) {
} else {
error = true;
message("Error: could not retreive latest prices for symbols="+symbols, ERROR_LEVEL);
message(" Code " + WinHttpReq.Status + " retrieving " + urlcurr.toUrl(), ERROR_LEVEL);

// ***** Get L&G Fund price - Additional lines added between, and including, the lines of asterisks *****
WinHttpReq.Open("GET", "", false);
var jefline = WinHttpReq.ResponseText;
var jefitem = jefline.split(",",5);
jefitem[0] = jefitem[0];
jefitem[1] = Math.round(parseFloat(jefitem[1])*100)/10000;
ymd = jefitem[3].split("/", 3);
jefitem[2] = ymd[1] + "/" + ymd[0] + "/" + ymd[2];
jefcol = "" + jefitem[0] + ", " + jefitem[1] + ", " + jefitem[2];

// done with file and http
// WinHttpReq.Close(); // wrong call..?
return !error;
} // getPrices()

// Windows automation - start Quicken application, and when it is
// open (after user enters any password, etc), run the Import command
// Quicken does not have Automation capabilities, so have to use
// SendKeys. This is not a very reliable method, depends a lot on timing
// and position of windows on screen, etc. Still, should work most of the
// time.
// TODO - not very reliable using scripting language
// this is better coded in something like C#, which has access
// to functions like FindWindow and can better ensure sendkeys is going
// to the right window.

It downloads the data from Yahoo, converts to pounds, and changes the date to UK format. The fund symbol GB0005141709GBP will need to be changed to the required fund. It is only written for a single fund, but it could modified for multiple funds. The additional coding is far from elegant, but it works.

The result is a fully automatic process, that dowloads share prices and a single UK fund price in a single process - just open Quicken and run the script.

Sorry I am having trouble

Sorry I am having trouble with this. Probably just me as not quite sure what needs changing. I have W7 Pro 64 bit.

Have downloaded files and put 'QImportP.wsf' and 'QImportP.cmd' into a new folder on my desktop called 'Shares for Quicken'

From reading the readme and .cmd file it looks as if all I needed to do was edit the .cmd file to have the list of my symbols in the section: set SYMBOLS and it starts set SYMBOLS="AOR.L,AU.L,

Instructions, to me, unclear but looks as if all should now work with just running the .cmd file though not sure as also mentions that must run under cscript. Not sure how to do that.

When run .cmd file then a cmd windows pops up and something happens but much too fast to see what though certainly a few lines of text.

Nothing else seems to happen and certainly no import into Quicken.

Not yet tried with funds or link in Quicken. Just great if can get to work from Start menu.

Thanks for all the work on this already and sorry if answer is obvious but not sure what else, if anything, I should do.

Should have said I am in UK

Should have said I am in UK and only trying to do UK shares. Do I need to make changes for ddmmyy or to get div by 100?

There is no .cmd, there is a

There is no .cmd, there is a .cmd.txt which should be edited, and then renamed - you may have already done that.
There is one more line to edit - WSFPATH. As the QImportP.cmd comment says, you will likely need to change all three lines to set SYMBOLS, ARGUMENTS, and WSFPATH. Add /div100 to ARGUMENTS if you find UK prices off by a factor of 100.

Then, to test, start a console (cmd.exe), go to the folder you created and run
it will then show all its output, and error messages.

If no error, check output file - QImportP.csv.
Search for it, or look in %TMP% folder.
If that looks ok (has quotes you need), then it is all working.
Just start Quicken, create a shortcut to .cmd file, and run it to get quotes and import the .csv data.

Thanks a lot and a very

Thanks a lot and a very speedy response. What a fantastic tool! Even able to backdate all the missing prices for 900 days.

For those who might get a bit confused by what to do I just:
Put the wsf and cmd.txt files in a folder
Renamed .txt file to .cmd
In the .cmd file:
added in my companies in the set SYMBOLS= section
set ARGUMENTS=/automate /days:7 /daily /div100 /dmy
set WSFPATH=QImportP.wsf
Created a .bat file with the lines:
cd "D:\My Documents\Quicken\Shares for Quicken\WDR" - the path to the folder

Everything seems to work perfectly now except I get a few error messages on the lines of:
Error: could not retreive historical prices for symbol=GPOR.L
Code 404 retrieving

The companies and number of them affected does vary a bit but mostly the same ones. I assume this is just something to do with Yahoo but just in case..... Any ideas?

Thanks again and as someone else said this deserved a link to Paypal.

I liked this script but after

I liked this script but after updated to Quicken 2011 H&B Release 4, I got the following Error 2: Unable to activate Quicken Application - not sending keys.

I'm running W7 x64.

PS: I truly agree with comment 34: this link deserves a link to Paypal.

It would be surprising if

It would be surprising if this worked with Quicken 2011 - I'm sure Quicken changed around menus and hot-keys.

But the error above is actually before sending any keys - when you start the new Quicken, what is the title of the window? The QImportP.wsf script looks for a name starting with Quicken.
If that is correct, then - maybe it is Windows7 - did this script ever work with older Quicken on that system?
Might require editing/experimenting with the QImportP.wsf script to get it working.
Anyway - you don't need this script for Q2011, right? That must not been obsoleted by Intuit yet, so it should be able to pull in quotes from Intuit itself.

I was guy who got this

I was guy who got this working in post 34. Have Q2004 deluxe in UK on W7 Pro 64bit. Works great. Even opens Quicken to import data (though that not really a bonus).

Still get that odd error with some symbols though date? moving forward and now 29th Oct; even though I am only looking to go back 7 days

> Still get that odd error

> Still get that odd error with some symbols though date? moving forward and now 29th Oct;
> even though I am only looking to go back 7 days

That is strange - is it retrieving more than requested data? You can open the QImportP.csv (in temp dir), and look at it to see if has the bad data.

If it does, next step, if you wish to debug it, add /v:3 argument to QImportP.cmd script, and run it in a cmd.exe window, to see all the info messages.
It will show the URL it constructs to get the values - you can copy that URL and run it in a browser yourself. If the URL looks wrong, then bug is in QImportP. If the URL looks correct, but retrieved data is wrong, then it is problem of the interface, beyond our control.

Hello - thanks for your

Hello - thanks for your reply.

I got your advise and changed the script (well, at least I tried) and for now works again!
This script helps me to get quotes for Brazilian Stocks Exchange (Bovespa) via Yahoo. Unfortunately Intuit hasn't a tool able to perform this action and this great script deserves a way for donation!

Looked at QImportP.csv and,

Looked at QImportP.csv and, for the the shares it gets the error msg for, it has today's price but none for the previous 6, or so, days unlike the normal shares. But why it refs a date, in the error, much longer than the requested 7 days for just those shares I don't know.

Added arg and ran and get this:
D:\My Documents\Quicken\Shares for Quicken\>qimportp.cmd

D:\My Documents\Quicken\Shares for Quicken\>setlocal

D:\My Documents\Quicken\Shares for Quicken\>set SYMBOLS="AOR.L,AU.L,AZN.L,

D:\My Documents\Quicken\Shares for Quicken\>set ARGUMENTS=/automate /days:
7 /daily /div100 /dmy /v:3

D:\My Documents\Quicken\Shares for Quicken\>set WSFPATH=QImportP.wsf

D:\My Documents\Quicken\Shares for Quicken\>cscript QImportP.wsf /s:"AOR
L,FTO.L,FXC.L,GFS.L,GNK.L,GPOR.L" /automate /days:7 /daily /div100 /dmy /v:3
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

getArgVal: what=div100 val=true
getArgVal: what=dmy val=true
Output file name = C:\Users\Bob\AppData\Local\Temp\QImportP.csv
getArgVal: what=noget val=false
getArgVal: what=s val=AOR.L,AU.L,AZN.L,BA.L,BATS.L,BP.L,BRBY.L,BRNE.L,BT-A.L,C
getArgVal: what=days val=7
getArgVal: what=weekly val=false
getArgVal: what=monthly val=false
D:\My Documents\Quicken\Shares for Quicken\QImportP.wsf(269, 6) Microsoft
JScript runtime error: Permission denied

For simplicity I have removed some symbols.

Thanks for your help.

BTW, do you know how this could be adapted to run off Google Finance as it seems that has fewer problems when I view prices in browser.

There a lot of symbols still

There a lot of symbols still in the previous comment - isn't only GPOR.L the problem? And the only error is this URL:

I see the same error, but the .csv file looks fine - you mentioned an error and wrong date - can you print the exact error message?

Even though historical (past week) rates for GPOR.L are not available using the Yahoo API call, it does get the latest rate.

As for Google API - that is for personal portfolio management, it does not seem to offer the lookup capabilities that Yahoo does - so, can't use Google API.

Thanks, as ever, for speedy

Thanks, as ever, for speedy response. Pity about Google, remembered that other advantage was that Google also changes foreign stock prices into UK£ which is great. Oh well. Does or offer any ideas?

As for error it was just the one that I pasted before:

Error: could not retreive historical prices for symbol=GPOR.L
Code 404 retrieving

and so date was 26th October 2010 from that error. That date changes each day I run the script to the subsequent day. So for yesterday's run the error date was 6th November 2010 which is odd as I only asked it to look back 7 days and that is 37 (month and 7 days??).....

And, yes, this error happens with about 7-8 stocks. But not big issue, just curious. Still a great tool.

Those URLs just explain

Those URLs just explain Google API - which is a portfolio based API, not a general stock lookup. Most comments in first URL actually mention Yahoo APiIand don't answer the google question! Additionally, the Google API requires developer keys etc, so may not be very easy to use by individual downloaders of this tools.
As for
> a=10&b=26&c=2010
URL lookup - the a= part is MONTH-1, i.e., 10 is not October, but actually November. That is how Yahoo API is defined, month is from 0 to 11. A search showed this link with some descriptions:

Thanks a lot for looking.

Thanks a lot for looking. Still, overall, brilliant so don't waste any more of your time.

I had the same error and when

I had the same error and when I opened up regedit and searched for the related key, it wasn't there. In fact, there wasn't even the Intuit folder listed in HKLM>Software node. I right-clicked on the HKLM>Software node and added the Key "Intuit". Next, I right-clicked on the Intuit key that I just created and added the key "Quicken". Once that was done, I right-clicked the Quicken key and added a String value called ExePath. The value of the ExePath should be the path to your Quicken executable (qw.exe); mine was "C:\Program Files (x86)\Quicken\qw.exe". I added that as the value (in quotes because of the spaces), closed the BillMinder gadget and then re-added the BillMinder gadget by right-clicking anywhere on the desktop, selecting Gadgets, right-clicking the BillMinder one, and selecting Add.

Hi, I keep getting the


I keep getting the error no valid prices to import, can you help me with this thanks, Jon

I am having trouble getting

I am having trouble getting this to work with Quicken 2009. Can you help walk me through this?

I am afraid it just may not

I am afraid it just may not work with Quicken 2009 - never tested it.
Here's what is does:
1) it downloads prices into a file in the %TEMP% directory, QImportP.csv
Check if that is there and has data. If not, then the script is not being called correctly.
2) it tries to automate Quicken in loading that file. That requires Windows to cooperate, window names to match, etc.

I can't get it to import data

I can't get it to import data just the regular way. Must be something peculiar to Q2009. Thanks

argh! Finally figured out

argh! Finally figured out how to download regular way...I was leaving off the .csv. Now it works. Is there something that I could change to your script, given that information, that may make yours work? Thanks very much.

I am not sure I understand -

I am not sure I understand - the QImport.wsf script, run as described in the README, always creates a .CSV file in %TEMP%.
So no change should be required to that. It downloads, and then tries to automatically load that file in Quicken. Which step is not working? The first one creates the .csv file. The second one may fail for various reasons - too complex to debug remotely, I'm afraid. Windows + Quicken interaction.

The csv file seems to be

The csv file seems to be created, it has quotes for C and FMAGX in there. But when I change to some of my symbols it does not carry them over. Am I changing then in the right place, QImportP.cmd?

Yes, QImportP.cmd is the

Yes, QImportP.cmd is the right file to edit.
But if there are multiple copies, maybe it is running a wrong one.

Edit your QImportP.cmd and add a /v:3 arguments - as shown in the comments in there, to
the "set ARGUMENTS=... " line

Then start a "Command Prompt" and run "QImportP.cmd" - may or may not need full path.
It will show some details of what it is running and you check it is running with all the symbols you need. And then look at the .csv file it created - if the symbols were correct above and it could download the quotes, they should be in the .csv file.

I got the script to work by

I got the script to work by just typing cscript QImportP.wsf /s:"GPS,MERFX,etc /days:0 /automate in the command prompt. I must be doing something wrong somewhere because I can't seem to get it to work by typing "QImportP.cmd". But that is good enough. Thank you very much.

Thank you for your program.

Thank you for your program. It has been working as described. However, when I try to download option data I do not get any information. For instance, I put AMZN140118P00220000 (this is the symbol for a specific AMZN option and it retrieves a quote if entered in yahoo finance) in my list of symbols I do not get any data in the temp QImportP.csv. Do you know is this a limit of your program, such as limit on ticker characters or something with yahoo finance. Thanks for any insight.

Do you know if Yahoo API

Do you know if Yahoo API offers option prices at all?

They have a different web page (from the stock quotes page) to get options, so they may have a different API, or no support at all, for options.,C
for example will get a quotes.csv:

So that worked for stock C, failed for the option.

If there is a web URL to download the option, then certainly the program can be enhanced to download the data.

I guess they do not support

I guess they do not support it. With my limited computer knowledge I was just thinking that if you could get an option quote at the same place as a stock quote that it should be able to pull it into a csv file.

Have been using this for a

Have been using this for a number of years and thanks. Generally works fine. There are a few shares it never finds quotes for which I cannot work out why eg FXC.L, IASP.l, IH2O.L.

Also for some shares (eg MRC.L, SCIN.L, MWY.L) it seems to often divide the most recent day by 100 (as it should) but the other days in its 7 day download are not divided at all (or only by 1!).

Any idea why this should be for either issue?