PDA

View Full Version : Expected ';' Error when trying to run excel macro



swordid
06-06-2013, 08:01 PM
I am writing a web page to serve as a front to access an excel workbook that generates a config file for some hardware. Currently this is just me testing the concept and getting familiar with how jscript automates excel.

My problem is when I try to run the macro, I keep getting an "Expected ';' error" at the same line as my oXL.run(). As far as I am aware the syntax is correct, and the same oXL.run("book!module.macro") works in a second script I wrote that calls a diff macro in a diff workbook. I have already fixed the .dlls on my PC and checked IE settings, but what confuses me is why this won't work yet the other jscript runs just fine.


<!DOCTYPE html>
<html lang="en">


<body>
<SCRIPT LANGUAGE="VBScript">

</SCRIPT>

<SCRIPT LANGUAGE="JScript">
function AutomateExcel(store,direct,MdfFloor,MdfSW,Include)
{

// Start Excel and get Application object.
var oXL = new ActiveXObject("Excel.Application");
var filename = "D:\\Profiles\\ngwx36\\Desktop\\test.xlsm";
oXL.Visible = true;

// Open Staging Workbook
var oWB = oXL.Workbooks.Add(filename);


// Place vars from input in correct cell
oWB.Sheets("Instructions").Cells(1, 5).Value = store;
oWB.Sheets("Instructions").Cells(2,5).Value = direct;
oWB.Sheets("SWInventory").Cells(3,2).Value = MdfFloor;
oWB.Sheets("SWInventory").Cells(3,6).Value = MdfSW;

//checks to see if 3rd MDF needs to be included
if (Include == "Yes"){
oWB.Sheets("SWInventory").Cells(5,2).Value = "Included";
}

//fill 2 IDFs in to test atm
oWB.Sheets("SWInventory").Cells(7,2).Value = "1";
oWB.Sheets("SWInventory").Cells(7,3).Value = "1";
oWB.Sheets("SWInventory").Cells(7,4).Value = "SW01";
oWB.Sheets("SWInventory").Cells(7,6).Value = "EX2200C";
oWB.Sheets("SWInventory").Cells(8,2).Value = "2";
oWB.Sheets("SWInventory").Cells(8,3).Value = "2";
oWB.Sheets("SWInventory").Cells(8,4).Value = "SW02";
oWB.Sheets("SWInventory").Cells(8,6).Value = "EX2200C";

oXL.Run("test.xlsm!Module1.makeconfigs");


}

</SCRIPT>
<Form Name=Input>
<p>
<label>Store Name</label>
<input type = "text"
name= "StoreName"
value = "" />
</p>
<p>
<label>File Directory</label>
<input type = "text"
name= "FilePath"
value = "" />
</p>
<p>
<label>MDF Floor #</label>
<input type = "text"
name= "MdfFloor"
value = "" />
</p>
<p>
<label>MDF Type</label>
<input type = "text"
name= "MdfType"
value = "Enter MDF SW TYpe" />
</p>
<p>
<label>MDF Include</label>
<input type = "text"
name= "MdfInc"
value = "3rd MDF Yes or No?" />
</p>

</form>
<P><INPUT id=button1 type=button value="Start Excel"
onclick="AutomateExcel Input.StoreName.Value,Input.FilePath.Value,Input.MdfFloor.Value,Input.MdfType.value,Input.MdfInc.Value">
</P>

</body>
</html>

jscheuer1
06-07-2013, 11:08 AM
I'm not familiar with what you're doing. But in ordinary javascript, this:


onclick="AutomateExcel Input.StoreName.Value,Input.FilePath.Value,Input.MdfFloor.Value,Input.MdfType.value,Input.MdfInc.Value"

should be:


onclick="AutomateExcel(Input.StoreName.value,Input.FilePath.value,Input.MdfFloor.value,Input.MdfType.value,Input.MdfInc.value);"

And constructs like:


Input.MdfType.value

are safer when written out fully as:


document.forms.Input.MdfType.value

djr33
06-07-2013, 12:05 PM
Is this ordinary Javascript? Why/how? It's somewhat unlikely that anyone here happens to have experience with using Javascript for Excel, so the more information you can give the better. And you might want to look around the web to see if there's somewhere better to ask this.

If what John said helps, then it probably is ordinary Javascript and that's fine. But it still means a bit of guessing to figure out what's going on.