Meilleur auteur de réponses
HTA - activeX Excel.application : "un composant activeX ne peut pas créer un objet"

Question
-
Bonjour,
Je suis en train de développer une application Web (Intranet) pour une entreprise.
Il s'agit d'une application avec un interface HTA
En testant l'ouverture d'un composant activeX excel dans un iframe que j'intégre sur dans mon application :
<iframe src='applet.excel.html></iframe>
Je reçois le message d'erreur suivant:
"Un composant activeX ne peut pas créer un objet" et puis ca ne marche pas comme ca aurait-dû se passer.
J'imagine que c'est la partie du script : var oXL = new ActiveXObject("Excel.Application"); qui n'est pas autorisé sur ma machine
Voici la configuration de ma machine
Window vista Home premium
ISS 7.0
IE7 SP1
Microsoft Office Pro 20007
Dans le fichier applet.excel.html j'ai mis les codes suivants :
<HTML>
<BODY>
Press the button to start Excel and display quarterly data.
<SCRIPT LANGUAGE="VBScript">
Function CreateNamesArray()
' Create an array to set multiple values at once.
Dim saNames(5, 2)
saNames(0, 0) = "John"saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
CreateNamesArray = saNames
End Function
</SCRIPT><SCRIPT LANGUAGE="JScript">
function AutomateExcel()
{// Start Excel and get Application object.
var oXL = new ActiveXObject("Excel.Application");oXL.Visible = true;
// Get a new workbook.
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;// Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "First Name";
oSheet.Cells(1, 2).Value = "Last Name";
oSheet.Cells(1, 3).Value = "Full Name";
oSheet.Cells(1, 4).Value = "Salary";// Format A1
1 as bold, vertical alignment = center.
oSheet.Range("A1", "D1").Font.Bold = true;
oSheet.Range("A1", "D1").VerticalAlignment = -4108; //xlVAlignCenter// Create an array to set multiple values at once.
// Fill A2:B6 with an array of values (from VBScript).
oSheet.Range("A2", "B6").Value = CreateNamesArray();// Fill C2:C6 with a relative formula (=A2 & " " & B2).
var oRng = oSheet.Range("C2", "C6");
oRng.Formula = "=A2 & \" \" & B2";// Fill D2
6 with a formula(=RAND()*100000) and apply format.
oRng = oSheet.Range("D2", "D6");
oRng.Formula = "=RAND()*100000";
oRng.NumberFormat = "$0.00";// AutoFit columns A
.
oRng = oSheet.Range("A1", "D1");
oRng.EntireColumn.AutoFit();// Manipulate a variable number of columns for Quarterly Sales Data.
DispalyQuarterlySales(oSheet);// Make sure Excel is visible and give the user control
// of Excel's lifetime.
oXL.Visible = true;
oXL.UserControl = true;
}function DispalyQuarterlySales(oWS)
{
var iNumQtrs, sMsg, iRet;// Number of quarters to display data for.
iNumQtrs = 4;// Starting at E1, fill headers for the number of columns selected.
var oResizeRange = oWS.Range("E1", "E1").Resize(1,iNumQtrs);
oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";// Change the Orientation and WrapText properties for the headers.
oResizeRange.Orientation = 38;
oResizeRange.WrapText = true;// Fill the interior color of the headers.
oResizeRange.Interior.ColorIndex = 36;// Fill the columns with a formula and apply a number format.
oResizeRange = oWS.Range("E2", "E6").Resize(5,iNumQtrs);
oResizeRange.Formula = "=RAND()*100";
oResizeRange.NumberFormat = "$0.00";// Apply borders to the Sales data and headers.
oResizeRange = oWS.Range("E1", "E6").Resize(6,iNumQtrs);
oResizeRange.Borders.Weight = 2; // xlThin// Add a Totals formula for the sales data and apply a border.
oResizeRange = oWS.Range("E8", "E8").Resize(1,iNumQtrs);
oResizeRange.Formula = "=SUM(E2:E6)";
// 9 = xlEdgeBottom
oResizeRange.Borders(9).LineStyle = -4119; //xlDouble
oResizeRange.Borders(9).Weight = 4; //xlThick// Add a Chart for the selected data.
oResizeRange = oWS.Range("E2:E6").Resize(5,iNumQtrs);
var oChart = oWS.Parent.Charts.Add();
oChart.ChartWizard(oResizeRange, -4100, null, 2); // -4100 = xl3dColumn
oChart.SeriesCollection(1).XValues = oWS.Range("A2", "A6");
for (iRet = 1; iRet <= iNumQtrs; iRet++) {
oChart.SeriesCollection(iRet).Name = "=\"Q" + iRet + "\"";
}
oChart.Location(2, oWS.Name); // 2 = xlLocationAsObject// Move the chart so as not to cover your data.
oWS.Shapes("Chart 1").Top = oWS.Rows(10).Top;
oWS.Shapes("Chart 1").Left = oWS.Columns(2).Left;
}
</SCRIPT>
<P><INPUT id=button1 type=button value="Start Excel"
onclick="AutomateExcel"></P>
</BODY>
</HTML>
Réponses
-
C'est un ActiveX côté client : regarde dans le menu Outils > Options Internet d'internet explorer et clique sur personnaliser le niveau. Il faut cliquer sur autoriser l'exécution des ActiveX.
- Marqué comme réponse Gilles TOURREAUModerator jeudi 20 août 2009 20:43
-
Le chemin est :
- Marqué comme réponse Gilles TOURREAUModerator jeudi 20 août 2009 20:43
Toutes les réponses
-
C'est un ActiveX côté client : regarde dans le menu Outils > Options Internet d'internet explorer et clique sur personnaliser le niveau. Il faut cliquer sur autoriser l'exécution des ActiveX.
- Marqué comme réponse Gilles TOURREAUModerator jeudi 20 août 2009 20:43
-
Le chemin est :
- Marqué comme réponse Gilles TOURREAUModerator jeudi 20 août 2009 20:43
-