我正在编写一个网页作为访问 Excel 工作簿的前端,该工作簿为某些硬件生成配置文件。目前这只是我测试这个概念并熟悉 jscript 如何自动化 excel。
我的问题是当我尝试运行宏时,我不断收到“预期的”;第 46 行字符 7 处出错。” 据我所知,语法是正确的,它适用于不同的 Excel 工作簿宏。我已经在我的 PC 上修复了 .dll 并检查了 IE 设置,但让我感到困惑的是为什么这不起作用而其他 jscript 运行得很好。
工作正常:oXL.Run("ButtonTest.xlsm!Module1.buttonclick");
给出错误:oXL.Run("test.xlsm!Module1.makeconfigs");
我的概念测试的完整代码:
<!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";
window.alert("Filled Sheet Just Fine");
//run config macro
oXL.Run("test.xlsm!Module1.makeconfigs");
window.alert("Process Complete");
}
</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>
更新:
我还没有发现为什么会出现预期的错误,但我确实通过创建一个简单地运行宏的 VBScript 函数来实现解决方法。出于某种原因,VB 可以运行这个特定的宏,但 Jscript 不喜欢。
<!DOCTYPE html>
<html lang="en">
<body>
<script language = "VBscript">
function RunMacro()
dim oXL
Set oXL = GetObject(,"Excel.Application")
oXL.Run "makeconfigs"
end function
</script>
<Script Language = "jscript">
function AutomateExcel(){
var oXL = new ActiveXObject("Excel.Application");
var filename = "D:\\Profiles\\ngwx36\\Desktop\\test.xlsm";
oXL.Visible = true;
var oWB = oXL.Workbooks.Add(filename);
RunMacro();
}
</Script>
<P><INPUT id=button1 type=button value="Start Excel"
onclick="AutomateExcel()">
</P>
</body>
</html>