J'essaie d'utiliser javascript pour envoyer des données à une liste Excel, ajouter les données à la liste, enregistrer et fermer la liste. Je sais en utilisant ActiveX je suis limité à IE mais c'est ok.Enregistrer et quitter l'objet ActiveX
Le problème auquel je fais face est que ni la méthode de quitter ni la méthode de sauvegarde ne fonctionnent. Le processus reste ouvert et les données ne sont pas enregistrées, sauf si je l'enregistre manuellement.
Heres le code:
function getNumber() {
var Excel = new ActiveXObject("Excel.Application");
var test = Excel.Workbooks.Open("pathToFile");
var LastRow = test.ActiveSheet.Range("A1").CurrentRegion.Rows.Count;
alert(LastRow);
var combine = "A" + (LastRow);
alert(combine);
var getCell = test.ActiveSheet.Range(combine).Value;
var delimiter = '_';
var start = 3;
var tokens = getCell.split(delimiter).slice(start);
var result = parseInt(tokens.join(delimiter));
var newNumber = result + 1;
whichCompany();
var newRow = "A" + (LastRow + 1);
var id = "D_" + selectedName + "_2017_"+ newNumber.toString();
test.ActiveSheet.Range(newRow).Value = id;
alert(id);
newRow = "B" + (LastRow + 1);
var m_names = new Array("Jan", "Feb", "Mar",
"Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec");
var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var dateNow = curr_date + m_names[curr_month] + curr_year;
test.ActiveSheet.Range(newRow).value = dateNow;
newRow = "C" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("fName").value + " " + document.getElementById("lName").value;
newRow = "D" + (LastRow + 1);
internalOrExternal();
test.ActiveSheet.Range(newRow).Value = intOrExt;
newRow = "E" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("case").value;
newRow = "F" + (LastRow + 1);
test.ActiveSheet.Range(newRow).Value = document.getElementById("produkt").value;
Excel.Quit();
}
merci pour cela, malheureusement, cela n'a pas fonctionné. En ce qui concerne ne pas être la preuve du futur. Ceci est juste une solution de contournement jusqu'à ce qu'un système plus sophistiqué sera mis en œuvre. Ce que je ne comprends pas c'est pourquoi les autres méthodes semblent fonctionner parfaitement mais "saveas()" et "quit()" ne fonctionnent pas. Cela pourrait-il être dû à un problème d'autorisation? – Deviator
@Deviator Il pourrait être. Le compte qui exécute ce script doit évidemment avoir des droits d'écriture sur l'emplacement que vous enregistrez. Nous avons rencontré des problèmes similaires lorsque nous ne pouvions pas écrire sur un lecteur partagé car le script s'exécutait dans un service sur IIS sous le compte SYSTEM au lieu d'utiliser un compte administrateur. Terminé en utilisant un script SMB2 pour accéder au lecteur partagé avec les informations d'identification correctes. (du côté serveur) – Shilly