在VBA中使用JAVASCRIPT和VBSCRIPTWord格式文档下载.docx
- 文档编号:3023408
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:39
- 大小:28.69KB
在VBA中使用JAVASCRIPT和VBSCRIPTWord格式文档下载.docx
《在VBA中使用JAVASCRIPT和VBSCRIPTWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《在VBA中使用JAVASCRIPT和VBSCRIPTWord格式文档下载.docx(39页珍藏版)》请在冰点文库上搜索。
subaa():
msgbox"
hello.."
:
endsub"
x.Run"
以前需要分开好几个模块,函数,现在可以统统放在一起了。
。
endsub:
subbb:
msgbox3:
subcc:
endsub"
自定义函数的用法
functionsum(x,y):
sum=x+y:
endfunction"
bb=x.Run("
sum"
2,3)
MsgBoxbb
动态改变窗口,文本框,单元格,range属性,
本例改[A1:
z888]单元格为红色
Subfig88()
SetX=CreateObject("
X.Language="
X.addcode"
SUBAA:
XX.INTERIOR.COLORINDEX=3:
ENDSUB"
X.ADDOBJECT"
XX"
[A1:
z888]
X.Run"
AA"
设置和调用全局变量
Subfigvb()
publicx:
subaa(bb):
x=bb*100:
3
b=x.codeobject.x
MsgBoxb
代码放在单元格里不再是笑话:
Subfigvbs()
Setx=CreateObject("
x.Language="
[a1]="
a1=3"
[a2]="
b1=4"
[a3]="
msgboxa1+b1"
Fori=1To3
x.executestatementCells(i,1)
Next
EndSub
新建类可以不再需要类模块
SetX=CreateObject("
X.Language="
X.ADDCODE"
CLASSAA:
PUBLICSUBTEST():
MSGBOX"
类模块"
ENDSUB:
ENDCLASS"
SETYY=NEWAA"
SetRR=X.EVAL("
YY"
RR.TEST
表达式可以直接拿来运算
Subaa()
DimARR
(2)
ARR(0)="
3"
ARR
(1)="
4*6"
ARR
(2)="
SIN(5)"
KK=Join(ARR,"
+"
BB=X.EXECUTESTATEMENT("
KK)
*"
msgbox,inputbox也可以作为变量
Subfigtest1()
aa="
msgbox"
bb="
cc=inputbox"
Fori=1To4
IfiMod2=0Then
kk=aa&
i
Else
kk=bb&
("
i&
EndIf
x.executestatement(kk)
Next
字符串加密(md5)
X.ADDCODE"
Functionx(s):
Sety=CreateObject("
CAPICOM.HashedData"
):
y.Algorithm=3:
_
y.Hashs:
z=y.Value:
x=z:
EndFunction"
BB=X.Run("
x"
FIGFIG"
MsgBox"
字符FIGFIG加密后是:
BB
数组也可以随意切割了
SubJSArraySample()
SetobjJS=CreateObject("
ScriptControl"
WithobjJS
.Language="
JScript"
.AddCode"
functionJSSplit(s,d){returns.split(d);
EndWith
文字列="
a,b,c,d,e"
Setb=objJS.CodeObject.JSSplit(文字列,"
'
MsgBoxb.slice(0,1)
MsgBoxb.slice(1,2)
MsgBoxb.slice(2,5)
功能更加强大的正则表达式
Subfigexp()
Setjs=CreateObject("
js.Language="
script="
abcdefg'
.match(/a/)"
result=js.eval(script)
MsgBoxresult
jscript返回的对象应该是一个数组,可以在VB直接调用相关函数,但又可以直接显示所有元素
SubMytest()
Setsp1=CreateObject("
sp1.Language="
s="
functionsortarr(arr){returnarr.toArray();
顺序
sp1.AddCodes
aa=Array("
张"
王"
李"
赵"
钱"
孙"
周"
吴"
郑"
Setbb=sp1.codeobject.sortarr(aa)
MsgBoxbb.slice(1,4)
MsgBoxbb.concat("
888"
).concat("
777"
bb.push("
999"
数组非交集
Subfigjs()
arr1=[a2:
a11]
arr2=[b2:
b6]
scriptcontrol"
jscript"
x.eval("
functionaa(aa){returnaa.toArray();
Setarr3=x.eval("
newArray();
Sety=x.codeobject.aa(arr1)
Setz=x.codeobject.aa(arr2)
Setm=y.concat(z)
ForEachmmInm
IfInStrRev(m,mm)=InStr(m,mm)Thenarr3.pushmm
MsgBoxarr3
其他的强大的数组功能
sp1.Language="
)'
直接添加到数组末尾,不再需要重定义
bb.unshift("
直接添加到数组开头,不再需要重定义
bb.pop'
删除最后一个元素
bb.shift'
删除最前一个元素
bb.splice2,3,"
a"
b"
c"
直接替换数组
Subtst004()
SetobjIE=CreateObject("
InternetExplorer.Application"
WithobjIE
.Navigate"
about:
blank"
.Visible=1
EndWith
DoWhileobjIE.Busy=True
DoEvents
Loop
objIE.Document.Write"
TEST"
Chr(10)
Setie=CreateObject("
Withie
DoWhileie.Busy=True
ie.document.write"
<
HTML>
BODY>
script>
functionabcd(){alert('
你输入的是:
+document.F1.T1.value);
};
/script>
formname=F1>
<
inputtype=textname=T1size=20>
inputtype=buttonvalue=验证onClick='
abcd()'
>
/form>
/BODY>
/HTML>
数组的读取
Subfigjjs()
Sety=x.eval("
aa=newArray()"
Fori=1To100
y.pushi
kk=8
MsgBoxx.eval("
aa["
]"
把多维数组转换为一维
Subkk()
[a1]=1
[a2]=2
[b1]=3
[b2]=4
DimscAsObject
Setsc=CreateObject("
sc.Language="
a=[a1:
b2]
sc.AddCode"
functionaa(a){returnnewVBArray(a).toArray();
Setn=sc.CodeObject.aa(a)
MsgBoxn
把单元格作为对象传入js里
Subava()
x.eval"
functionaa(aa){returnaa.value.toArray()}"
Sety=x.Run("
[a1:
b4])
MsgBoxy
functionaa(aa){returnaa.font.colorindex}"
y=x.Run("
[a1])
把workbook对象传入js里
functionaa(aa){returnaa.sheets.count}"
ThisWorkbook)
传入WORKBOOK,输出A1单元格
Subff()
functionaa(aa){returnaa.sheets
(1).cells(1,1)}"
MsgBoxy.Row
创建对象和属性
aa=newObject;
aa.myname='
fig7'
MsgBoxy.myname
y.myname="
fig8"
调用其他模块,JAVASCRIPT也可以有MSGBOX
注意把代码放入WORKBOOK,不能放入模块1,至于模块1应该传入什么对象,请版主和其他高手有空研究一下,谢谢
这里传入ME,就是thisworkbook,可以调用BB函数,在模块1我试过传入APPLICATION对象,但是不行,无法调用BB
如果用VBE.PROJECTS对象又要修改设置不太实用
PrivateSubkkk()
Setm_sc=CreateObject("
Withm_sc
.AddObject"
o"
Me
.EVAL"
o.bb()"
PublicSubbb()
kk"
模块中可以传入thisworkbook
.Language="
.AddObject"
ThisWorkbook
.EVAL"
MsgBox"
window对象的那些方法
htmlfile"
x.EVAL"
functionaa(aa){aa.alert
(1)}"
ie.parentWindow)
请问figfig老师,怎么调用传入的对象的方法。
Subava()
functionaa(aa){aa.sheets
(1).cells(1,1)=2}"
functionaa(aa){aa.name='
b'
ActiveSheet)
查出是哪个函数调用本函数,
varWD;
functiongg(){WD.alert(gg.caller)};
functionaa(aa){WD=aa;
gg();
}functionbb(aa){WD=aa;
Subkkk()
Setwin=ie.parentwindow
win.execscript"
functionaa(aa){alert(aa)}"
win.aa"
bbb"
functionaa(){alert
(1);
functionbb(){ll=setTimeout(aa(),1000)}"
ll=win.setInterval(win.aa,1000)
MsgBoxll
SETINTERVAL
functiongg(){WD.alert
(2);
WD.alert
(1);
WD.setInterval(gg,1000);
暂时不要点确定"
也可以这样,SETTIMEOUT
WD.setTimeout(gg,1000);
ForI=1To8888888888888#
varbb;
functionaa(){bb.range('
a1'
)+=1;
};
functionmm(cc,dd){bb=cc;
dd.setInterval(aa,2000)}"
mm"
ActiveSheet,ie.parentWindow)
Fori=1To888888888888888#
End
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 使用 JAVASCRIPT VBSCRIPT
![提示](https://static.bingdoc.com/images/bang_tan.gif)