iWebOffice2004调用VBA脚本解释及翻译

来源:岁月联盟 编辑:zhuzhu 时间:2004-05-07
<script language=javascript>
//系统变量
var vFileName=""; //打开的文件名
var vObject=null; //打开的对象
var gFileName=""; //文件名
var gObject=null; //对象
var gOpened=false; //是否被打开
var gUserName=""; //系统用户
</script>


<script language="JScript" for=WebOffice event="OnDocumentOpened(vFileName,vObject)">
OnDocumentOpened(vFileName,vObject); //打开文件事件
</script>

<script language="JScript" for=WebOffice event="OnDocumentClosed()">
OnDocumentClosed(); //关闭文件事件
</script>

<script language=javascript>
//打开文档,根据用户权限(EditType),进行初始化设置
function OnDocumentOpened(vFileName,vObject)
{
var mProtect,mTools,mTrack,mPrint,mShow;
gFileName=vFileName; //取得全局文件名
gObject=vObject; //取得全局对象
//设置痕迹和保护状态
if (webform.WebOffice.EditType=="0"){
mProtect=true;
mTools=false;
mTrack=false;
mPrint=false;
mShow=true;
}else if(webform.WebOffice.EditType=="1"){
mProtect=false;
mTools=false;
mTrack=false;
mPrint=false;
mShow=false;
}else if(webform.WebOffice.EditType=="2"){
mProtect=false;
mTools=false;
mTrack=true;
mPrint=true;
mShow=true;
}else if(webform.WebOffice.EditType=="3"){
mProtect=false;
mTools=true;
mTrack=true;
mPrint=true;
mShow=true;
}else{
var mType="";
var mEdit=webform.WebOffice.EditType;
var mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
}
mEdit=mEdit.substring(mIdx+1,mEdit.length);

mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
if (mType=="1") mProtect=true;
if (mType=="0") mProtect=false;
}
mEdit=mEdit.substring(mIdx+1,mEdit.length);

var mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
if (mType=="1") mShow=true;
if (mType=="0") mShow=false;
}
mEdit=mEdit.substring(mIdx+1,mEdit.length);

var mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
if (mType=="1") mTrack=true;
if (mType=="0") mTrack=false;
}
mEdit=mEdit.substring(mIdx+1,mEdit.length);

var mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
if (mType=="1") mPrint=true;
if (mType=="0") mPrint=false;
}
mEdit=mEdit.substring(mIdx+1,mEdit.length);

var mIdx=mEdit.indexOf(",");
if (mIdx>0){
mType=mEdit.substring(0,mIdx);
if (mType=="1") mTools=true;
if (mType=="0") mTools=false;
}

}

if (webform.WebOffice.FileType==".doc"){
gObject.TrackRevisions=mTrack;
gObject.PrintRevisions=mPrint;
gObject.ShowRevisions=mShow;

gObject.CommandBars('Reviewing').Enabled =mTools;
gObject.CommandBars('Reviewing').Visible =mTools;

var mCount=gObject.CommandBars('Track Changes').Controls.Count;
for (var mIndex = 1; mIndex<= mCount; mIndex++){
var mCurID=gObject.CommandBars('Track Changes').Controls(mIndex).ID;
if ((mCurID==1715) || (mCurID==1716) || (mCurID==2041) || (mCurID==305)) {
gObject.CommandBars('Track Changes').Controls(mIndex).Enabled = mTools;
}
}
if (mProtect){
gObject.Protect(2);
}
if (gUserName == "") {
//保存原来的用户
gUserName=gObject.Application.UserName;
//设置系统当前用户
gObject.Application.UserName=webform.WebOffice.UserName;
}
}


if (webform.WebOffice.FileType==".xls"){
if (mShow){
if (mTrack){
gObject.Application.DisplayCommentIndicator = 1;
}
}else{
gObject.Application.DisplayCommentIndicator = 0;
}

gObject.CommandBars('Reviewing').Enabled =mTools;
gObject.CommandBars('Reviewing').Visible =mTools;

if (mProtect){
for (var mIndex=1;mIndex<=gObject.Application.ActiveWorkbook.Sheets.Count;mIndex++){
var mSheet=gObject.Application.ActiveWorkbook.Sheets(mIndex);
mSheet.Protect("", true, true, true);
}
}

if (gUserName == "") {
//保存原来的用户
gUserName=gObject.Application.UserName;
//设置系统当前用户
gObject.Application.UserName=webform.WebOffice.UserName;
}
}
//打开成功
gOpened = true;
}

function OnDocumentClosed()
{
//关闭成功
gOpened = false;
}

//显示系统状态信息
function StatusMsg(mString){
StatusBar.innerText=mString;
}

//页面装入事件
function Load(){
//给控件属性付值
try{
webform.WebOffice.WebUrl="<%=mServerUrl%>";
webform.WebOffice.RecordID="<%=mRecordID%>";
webform.WebOffice.Template="<%=mTemplate%>";
webform.WebOffice.FileName="<%=mFileName%>";
webform.WebOffice.FileType="<%=mFileType%>";
webform.WebOffice.EditType="<%=mEditType%>";
webform.WebOffice.UserName="<%=mUserName%>";
//打开文档,执行发送LOADFILE操作
webform.WebOffice.WebOpen();
if (webform.WebOffice.Error!=""){
//如果不成功,执行发送LOADTEMPLATE操作
webform.WebOffice.WebLoadTemplate();
if (webform.WebOffice.Error!=""){
//如果还没有成功,则根据扩展名创建新文档
if (webform.WebOffice.FileType==".doc"){
webform.WebOffice.CreateNew("Word.Document");
}else if(webform.WebOffice.FileType==".xls"){
webform.WebOffice.CreateNew("Excel.Sheet");
}else if(webform.WebOffice.FileType==".ppt"){
webform.WebOffice.CreateNew("PowerPoint.Show");
}else{
webform.WebOffice.CreateNew("");
}
}
}
}catch(e){
}
//显示状态信息
StatusMsg(webform.WebOffice.Status);
}

//页面退出事件
function UnLoad(){
try{
//关闭OCX控件
webform.WebOffice.WebClose();
}catch(e){}
}

//设置是否显示痕迹
function ShowRevision(vValue){
var object=webform.WebOffice.ActiveDocument;
object.ShowRevisions=vValue;
if (vValue){
StatusMsg("显示痕迹...");
}else{
StatusMsg("隐藏痕迹...");
}
}

//调入文档
function LoadDocument(){
StatusMsg("正在打开文档...");
webform.WebOffice.WebOpen();
StatusMsg(webform.WebOffice.Status);
}

//保存文档
function SaveDocument(){
//判断状态
if (webform.EditType.value=="0"){
alert("你在查看状态,不能保存!");
return false;
}
//保存文档
webform.WebOffice.WebSave();
//如果没有错误
if (webform.WebOffice.Error!=""){
StatusMsg(webform.WebOffice.Status);
return false;
}else{
StatusMsg(webform.WebOffice.Status);
return true;
}
}

//打开版本信息
function WebOpenVersion(){
var mDialogUrl = "Version/VersionList.asp?RecordID="+webform.WebOffice.RecordID;
var mObject = new Object();
mObject.FileID = "";
mObject.Result = false;
window.showModalDialog(mDialogUrl, mObject, "dialogHeight:280px; dialogWidth:420px;center:yes;scroll:no;status:no;");
//如果用户确认选择
if (mObject.Result &&(mObject.FileID.length>0)){
//清除所有设置文本信息
webform.WebOffice.WebMsgTextClear();
//设置COMMAND为LOADVERSION
webform.WebOffice.WebSetMsgByName("COMMAND","LOADVERSION");
//设置用户选择的版本编号
webform.WebOffice.WebSetMsgByName("FILEID",mObject.FileID);
//发送命令给服务器
webform.WebOffice.WebSendMessage();
//如果没有错误
if (webform.WebOffice.Error==""){
//关闭当前文档
webform.WebOffice.Close();
//保存新版本为系统文件名
webform.WebOffice.WebMsgFileSave(gFileName);
//如果保存成功
if (webform.WebOffice.Error==""){
//打开该版本文档,
webform.WebOffice.Open(gFileName,true);
}
}else{
alert(webform.WebOffice.Error);
}
}else{
StatusMsg("取消打开版本");
}
StatusMsg(webform.WebOffice.Status);
}

//保存版本信息
function WebSaveVersion(){
var mDialogUrl = "Version/VersionForm.asp";
var mObject = new Object();
mObject.Descript = "";
mObject.Result=false;
window.showModalDialog(mDialogUrl, mObject, "dialogHeight:200px; dialogWidth:360px;center:yes;scroll:no;status:no;");
//如果用户确认选择
if (mObject.Result){
//清除所有设置文本信息
webform.WebOffice.WebMsgTextClear();
//设置COMMAND为SAVEVERSION
webform.WebOffice.WebSetMsgByName("COMMAND","SAVEVERSION");
//设置描述信息内容
webform.WebOffice.WebSetMsgByName("DESCRIPT",mObject.Descript);
//保存当前版本
webform.WebOffice.Save(gFileName,true);
//调入该文档
webform.WebOffice.WebMsgFileLoad(gFileName);
//发送到服务器上
webform.WebOffice.WebSendMessage();
if (webform.WebOffice.Error!=""){
alert(webform.WebOffice.Error);
}
}
StatusMsg(webform.WebOffice.Status);
}

//用数据库中的内容填充标签里的内容
function LoadBookmarks(){
var mCount,mIndex;
var mBookObject,mBookName,mBookIdx;
//清除所有设置变量信息
webform.WebOffice.WebMsgTextClear();
//设置COMMAND为LOADBOOKMARKS
webform.WebOffice.WebSetMsgByName("COMMAND","LOADBOOKMARKS");
//发送信息到服务器上
webform.WebOffice.WebSendMessage();
//如果没有错误信息
if (webform.WebOffice.Error==""){
//如果是Word文件
if (webform.WebOffice.FileType==".doc"){
//替换所有的标签内容
for (mBookIdx = 1; mBookIdx<=webform.WebOffice.ActiveDocument.Bookmarks.Count;mBookIdx++){
//取出标签名
mBookName = webform.WebOffice.ActiveDocument.Bookmarks.Item(mBookIdx).Name;
//取出该标签对应的服务器上的数据
mBookValue = webform.WebOffice.WebGetMsgByName(mBookName);
//如果该数据有值
if ((mBookValue)&&(mBookValue.length>0)) {
//取得标签对应的对象
mBookObject = webform.WebOffice.ActiveDocument.Bookmarks.Item(mBookIdx).Range;
//设置为服务器数据
mBookObject.Text=mBookValue;
//重新设置为标签
webform.WebOffice.ActiveDocument.Bookmarks.Add(mBookName, mBookObject);
}
}
}
}
StatusMsg(webform.WebOffice.Status);
}

//设置标签的内容
function SetBookmarks(vbmName,vbmValue){
//取得标签对象
var mBookmarks=WebFindBookmarks(vbmName);
if (mBookmarks){
//设置该标签的内容为新值
mBookmarks.Text=vbmValue;
//重新设置为标签
webform.WebOffice.ActiveDocument.Bookmarks.Add(vbmName, mBookmarks);
}
}

//取得标签内容
function GetBookmarks(vbmName){
var vbmValue="";
//取得标签对象
var mBookmarks=WebFindBookmarks(vbmName);
if (mBookmarks){
//取得内容
vbmValue=mBookmarks.Text;
}
return vbmValue;
}

//调用打印
function WebOpenPrint(){
try{
//调用打印功能,true表示显示打印设置,false表示直接打印
webform.WebOffice.PrintOut(true);
StatusMsg(webform.WebOffice.Status);
}catch(e){}
}

//调用打印页面设置对话匡
function WebOpenPageSetup(){
try{
if (webform.WebOffice.FileType==".doc"){
//如果是word
webform.WebOffice.ActiveDocument.Application.Dialogs(178).Show();
}else{
//如果是Excel
webform.WebOffice.ActiveDocument.Application.Dialogs(7).Show();
}
}catch(e){

}

}
//调用打开图片对话框
function WebOpenPicture(){
try{
if (webform.WebOffice.FileType==".doc"){
//如果是Word
webform.WebOffice.ActiveDocument.Application.Dialogs(163).Show();
}else{
//如果是Excel
webform.WebOffice.ActiveDocument.Application.Dialogs(342).Show();
}
}catch(e){

}
}

//电子印章功能
function WebOpenSignature(){
var mDialogUrl = "Signature/SignatureForm.asp";
var mMarkName,mPassWord,mMarkTime;
var mObject = new Object();
mObject.MarkName = "";
mObject.PassWord = "";
window.showModalDialog(mDialogUrl, mObject, "dialogHeight:200px; dialogWidth:360px;center:yes;scroll:no;status:no;");
//判断用户是否选择印章名称和密码
if (mObject.MarkName==""||mObject.PassWord==null){
StatusMsg("取消印章");
return false;
}else{
//取得系统文件目录
var mFilePath=webform.WebOffice.WebMsgFilepath;
var mImgShape=null;
var mLabName=null;
var mZOrder=null;
mMarkName=mObject.MarkName;
mPassWord=mObject.PassWord;
//清除所有设置的变量
webform.WebOffice.WebMsgTextClear();
//设置COMMAND 为 LOADMARKIMAGE
webform.WebOffice.WebSetMsgByName("COMMAND","LOADMARKIMAGE");
//设置印章名称
webform.WebOffice.WebSetMsgByName("IMAGENAME",mMarkName);
//设置印章密码
webform.WebOffice.WebSetMsgByName("PASSWORD",mPassWord);
//发送到服务器上
webform.WebOffice.WebSendMessage();
//如果没有错误
if (webform.WebOffice.Error==""){
//取得服务器返回时间
mMarkTime=webform.WebOffice.WebGetMsgByName("DATETIME");
//取得印章所盖的位置,POSITION所指的是标签的对象名
mLabName=webform.WebOffice.WebGetMsgByName("POSITION");
//设置印章的显示形式,4是在文字上方,5是在文字下方
mZOrder=webform.WebOffice.WebGetMsgByName("ZORDER");
//取得完整的印章图片名称
var mFileName=webform.WebOffice.WebGetMsgByName("IMAGENAME");
//保存该印章
webform.WebOffice.WebMsgFileSave(mFilePath+mFileName);
//如果一切正常
if (webform.WebOffice.Error==""){
//如果是word文件
if (webform.WebOffice.FileType==".doc"){
var mInlineShapes=null; //=webform.WebOffice.ActiveDocument.InlineShapes.Count;
//var mShapes=webform.WebOffice.ActiveDocument.Shapes.Count;
var mBookMark=WebFindBookmarks(mLabName);
if (mBookMark){
mInlineShapes=mBookMark.InlineShapes.AddPicture(mFilePath+mFileName);
}else{
mInlineShapes=webform.WebOffice.ActiveDocument.Application.Selection.InlineShapes.AddPicture(mFilePath+mFileName);
}

//if (mInlineShapes!=webform.WebOffice.ActiveDocument.InlineShapes.Count){
// mImgShape = webform.WebOffice.ActiveDocument.InlineShapes.Item(webform.WebOffice.ActiveDocument.InlineShapes.Count).ConvertToShape();
/