<HTML> <HEAD>
<META author="RockedPanda">
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<HTA:ApplicationID="oHTA"
Applicationname="环境配置校验工具"
border="thin"
borderstyle="normal"
caption="yes"
maximizebutton="yes"
minimizebutton="yes"
showintaskbar="no"
singleinstance="no"
sysmenu="yes"
version="1.0"
windowstate="normal"
scroll="yes">
<TITLE>模板维护</TITLE>
<style>
body,div, ul, li, a{
margin:0;
padding:0;
}
body{
background-color:#BFDBFF;
}
a {
text-decoration:none;
color: #000000;
line-height: 20px;
font-size: 12px;
border: 1px solid #BFDBFF;
padding: 4px 5px 4px 5px;
}
a:hover{
background-color: #FFE79E;
border: 1px solid #FFBD69;
}
li {
float:left;
/*margin-right: 10px;*/
list-style:none;
height: 25px;
padding: 1px 0 2px 0;
}
li:hover:{
}
li a {
margin-right: 10px;
}
#info {
display:none;
}
</style>
</HEAD>
<BODY onload="initExcelObj();">
<div id="dsoContainer" style="width:100%;height:100%;">
<OBJECT ID="WebOffice1" height="100%" width="100%"
CLASSID="clsid:00460182-9E5E-11d5-B7C8-B8269041DD57" CODEBASE="DSOframer.CAB#version=1,0,0,0">
<param name="BorderStyle" value="1">
<param name="TitlebarColor" value="52479">
<param name="TitlebarTextColor" value="0">
<param name="Menubar" value="0">
</OBJECT>
</div>
<script language="javascript">
function initExcelObj(){
alert("测试前请确保已经关闭了所有的excel程序并保证没有excel文件处于打开状态");
RegFeiQ(); //检测注册表配置项
//testClipboardAndFile(); //检测剪贴板读写
excelRead(); //检测VBA脚本导入和执行
}
/******************检查调整注册表 开始***************************/
function checkReg(){
alert("检测注册表数据");
var wsh = new ActiveXObject("WScript.shell");
try{
var reg = wsh.RegRead("HKCU/Software/Microsoft/Internet Explorer/Main/Start Page");
alert(reg);
}catch(e){
alert("读取注册表信息失败");
}
}
function fixReg(key, value, type){
var regEdit = new RegEdit();
var x = regEdit.regRead(key);
//alert(x+" "+key);
if(x==="" || x===null){
alert("键值不存在,将创建:" + key);
regEdit.regWrite(key,value,type);
return;
}
if(x != value){
regEdit.regWrite(key,value,type);
}
else{
//alert(key+'已经是正确配置');
}
}
/** 检测本地安装的excel的版本,并重新调整excel中对vba的限制级别 **/
function RegFeiQ(){
//Office 2003的版本号为11.0, Office 2007是12.0, 最新的Office 2010为14.0 2013为15.0
var versions = ["11.0","12.0","14.0","15.0"];
var versionsInstalled = [];
var excelNames = {"11.0":"Excel_2003","12.0":"Excel_2007","14.0":"Excel_2010","15.0":"Excel_2013"};
var regEdit = new RegEdit();
for(var i=0;i<versions.length;i++){
var ans = regEdit.regRead("HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\"+versions[i]+"\\Excel\\Options\\Options");
if(ans !== null){
versionsInstalled.push(versions[i]);
}
}
if(versionsInstalled.length >0){
var excelVStr = "";
for(var i=0;i<versionsInstalled.length;i++){
excelVStr += excelNames[versionsInstalled[i]] + " ";
}
alert("本机已安装:"+excelVStr);
}
else{
alert("检测到本机未安装excel,请手动检查或安装");
return;
}
for(var i=0;i<versionsInstalled.length;i++){
var verNo = versionsInstalled[i];
var excelLevel = "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\"+verNo+"\\Excel\\Security\\Level";
fixReg(excelLevel,1,'REG_DWORD'); //设置excel宏安全级别为低
var excelVBOM = "HKEY_CURRENT_USER\\Software\\Microsoft\\Office\\"+verNo+"\\Excel\\Security\\AccessVBOM";
fixReg(excelVBOM,1,'REG_DWORD'); //设置VBA工程可编程
}
alert("注册表项检测结束");
return;
}
/********************检查调整注册表 结束*************************/
/************************VBA宏导入和执行 开始*********************/
/** 声明dosframer插件 **/
var WebOffice1;
/** 测试excel加载外置VBA脚本和执行VBA脚本宏的功能 **/
function excelRead(){
WebOffice1 = document.getElementById("WebOffice1");
WebOffice1.Titlebar = !WebOffice1.Titlebar;
WebOffice1.Toolbars = !WebOffice1.Toolbars;
WebOffice1.Menubar = false;
var vbaFileName = getLocation() +"empty.xls";
WebOffice1.Open(vbaFileName);
alert("开始excel加载宏和外置脚本测试.");
vbaFileName = getLocation() +"模块1.bas";
//alert(vbaFileName);
//导入外置bas文件
WebOffice1.ActiveDocument.Application.ActiveWorkbook.VBProject.VBComponents.Import(vbaFileName);
//测试导入外部文件到excel的Thisworkbook模块内
//WebOffice1.ActiveDocument.Application.Run("ImportThisWorkBookCls");
RunVBA("testSelfEnv");
}
/** 获取当前文件路径 **/
function getLocation(){
var path = window.location.href;
return path.replace(/\.hta/,"").replace(/[^\/\\]*\.html/,"").replace("file:///","").replace(/\//g,"\\");
}
/** 执行VBA宏,并获取窗口焦点,参数支持1~4个,第一个参数为待执行的VBA宏名称,后面的为传递给VBA的参数 */
function RunVBA(funcName,funcParams){
var argc = arguments.length;
var ans;
if(argc == 1){
ans = WebOffice1.ActiveDocument.Application.Run(arguments[0]);
}
else if(argc == 2){
ans = WebOffice1.ActiveDocument.Application.Run(arguments[0],arguments[1]);
}
else if(argc == 3){
ans = WebOffice1.ActiveDocument.Application.Run(arguments[0],arguments[1],arguments[2]);
}
else if(argc == 4){
ans = WebOffice1.ActiveDocument.Application.Run(arguments[0],arguments[1],arguments[2],arguments[3]);
}
this.focus();
return ans;
}
/*******************VBA宏导入和执行 结束*****************/
/*******************注册表项读取 开始**************************/
/**
* 注册表编辑器,封装对注册表的操作
*/
function RegEdit(){
this.shell = new ActiveXObject("WScript.Shell");
this.regRead = regRead;
this.regWrite = regWrite;
this.regDelete = regDelete;
}
/** 返回名为 strName 的注册键或值。
* @param strName 要读取的键或值。如果 strName 以反斜线 (\) 结束,本方法将返回键,而不是值
* @return 名为 strName 的注册键或值
*/
function regRead(strName){
var val = null;
try {
val = this.shell.regRead(strName);
} catch (e) {
//alert(e.message);
}
return val;
}
/** 设置 strName 指定的注册键或值
* @param strName 要写的键或值的名称.如果 strName 以反斜线 (\) 结束,本方法将返回键,而不是值
* @param anyValue 要写入键或注册表值中的值
* @param strType 可选项。要保存到注册表中的值的数据类型REG_SZ、REG_EXPAND_SZ、REG_DWORD、REG_BINARY
*/
function regWrite(strName,anyValue,strType){
if(strType == null) strType = "REG_SZ";
this.shell.regWrite(strName,anyValue,strType);
}
/** 从注册表中删除 strName 指定的键或值。
* @param strName 要删除的键或值的名字。如果 strName 以反斜线 (\) 结束,本方法将删除键,而不是值
*/
function regDelete(strName){
this.shell.regDelete(strName);
}
/********************注册表项读取 结束*************************/
/********************剪贴板测试 开始*************************/
/** 剪贴板测试 **/
function testClipboardAndFile(){
var a = "剪贴板测试";
saveStringToClipboard(a);
var b = getStringFromClipboard();
if(a == b){
alert("剪贴板测试通过");
}
else{
alert("您必须允许IE可以访问系统剪贴板,请重新执行检测,在对应的访问许可弹出框上点击允许");
}
return; //当前版本不需要访问本地文件,暂不检测
var c = getLocation() +"ThisWorkbook.txt";
if(readFile(c) == ""){
alert("您必须允许IE可以访问本地文件,请重新执行检测,在对应的访问许可弹出框上点击
dsoframer安装、环境配置和基本用法示例
4星 · 超过85%的资源 需积分: 20 175 浏览量
2015-01-08
16:22:39
上传
评论
收藏 438KB ZIP 举报
躁动de气球
- 粉丝: 10
- 资源: 4