我需要在没有安装Microsoft Office的PC上使用VBScript在电子表格中添加一行.
我试过[ Set objExcel = CreateObject("Excel.Application")]
由于PC上不存在Excel,因此无法创建此对象.
有没有办法在没有Excel的情况下修改电子表格?
假设你主要是程序员和Linux系统管理员之类的C语法,你的任务是在Windows上创建一些简单的自动化任务(监视备份文件,进程监控......).您更喜欢用哪种语言编写脚本?那里有大量的VBS脚本(使用VB语法),但我更喜欢任何与C相关的东西.
您在使用Windows脚本方面有哪些最佳体验?对某种语言有任何明显的下降或上升?
我对vbscript相当新,我正在努力,因为我对Javascript更熟悉.有人可以帮我一把吗?
vbscript是否允许使用我在下面的示例中使用的命名数组键?
例如,我有:
Dim result(3)
result(age) = 60
result(firstname) = "Tony"
result(height) = 187
result(weight) = 76
msgbox("Age: " & result(age) & vbCr &_
"Name: " & result(firstname) & vbCr &_
"Height: " & result(height) & vbCr &_
"Weight: " & result(weight) )
Run Code Online (Sandbox Code Playgroud)
生成的msgbox显示:
Age: 76
Name: 76
Height: 76
Weight: 76
Run Code Online (Sandbox Code Playgroud)
这似乎将结果数组中的每个元素分配给76,这应该只分配给"weight"元素.
这是否发生是因为vbscript只接受整数作为数组的键/索引?
任何帮助是极大的赞赏.
谢谢Turgs
例如,在语言X中:
let x = CreateOject( "MyProgID" )
x.LateBoundCall()
x.Release() // (or setting x to Nothing in VB-like language, etc)
Run Code Online (Sandbox Code Playgroud)
DLL会发生什么MyProgID?COM是否自动卸载DLL?
这假设上面的代码是在不暴露任何COM的可执行文件中.
当你像x = myfunc(a,b,,d) 第三个参数一样调用函数时?它是空的吗?空值?没有?
我的功能有问题,比方说,
function myfunc(p1, p2, p3, p4)
if p3 <> "" then whatever
end function
Run Code Online (Sandbox Code Playgroud)
给了我一个可怕的 type mismatch
PS我正在尝试用vbscript函数替换COM对象,并且对那些没有问题的COM对象进行了那些空参数调用,但是vbscript不喜欢它们.我不能改变调用,只有函数,所以我需要以某种方式处理空参数,只是不知道如何(尝试isnull没有运气,也是没有运气,并is nothing给我一个object required错误)
可以使用VBScript转义来转发帖子(application/x-www-form-urlencoded)或多部分帖子吗?它是否相当于PHP的urlencode?
我使用"ATL简单对象"向导在C++中使用ATL构建了一个COM服务器DLL.我关注了微软的ATLDLLCOMServer示例.一切都很好,除了一件事:我没有在VBScript中收到COM事件.我确实收到了C#中的事件.我在VBScript中使用早期基于MFC的实现中的事件作为ActiveX控件.
我的控件定义如下:
class ATL_NO_VTABLE CSetACLCOMServer :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSetACLCOMServer, &CLSID_SetACLCOMServer>,
public IConnectionPointContainerImpl<CSetACLCOMServer>,
public CProxy_ISetACLCOMServerEvents<CSetACLCOMServer>,
public IDispatchImpl<ISetACLCOMServer, &IID_ISetACLCOMServer, &LIBID_SetACLCOMLibrary, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IProvideClassInfo2Impl<&CLSID_SetACLCOMServer, &DIID__ISetACLCOMServerEvents, &LIBID_SetACLCOMLibrary> /* Required for event support in VBS */
{
public:
BEGIN_COM_MAP(CSetACLCOMServer)
COM_INTERFACE_ENTRY(ISetACLCOMServer)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(CSetACLCOMServer)
CONNECTION_POINT_ENTRY(__uuidof(_ISetACLCOMServerEvents))
END_CONNECTION_POINT_MAP()
[...]
Run Code Online (Sandbox Code Playgroud)
在VBScript中我使用COM对象,如下所示:
set objSetACL = WScript.CreateObject("SetACL.SetACL", "SetACL_")
' Catch and print messages from the SetACL COM server which are passed (fired) as events.
' The name postfix …Run Code Online (Sandbox Code Playgroud) 在VBScript中,我想获取按创建日期排序的文件夹中的文件列表.我看到为了做到这一点,我需要使用一个记录集(对我来说似乎有点过分)或者自己对集合进行排序(我想我可以避免它,我希望我的代码更短).
因为我是创建文件的人,所以我使用以日期开头的名称(yyyy_mm_dd)创建它们,所以尽管如此我如果能够获得至少按名称排序的文件,那么我就完全了.不幸的是,FileSystemObject的Files集合的MSDN文档没有说明集合的顺序.有没有人知道其他一些秘密文件或类似的东西可以更具体?
我试图使用vbs脚本发送邮件,但它不起作用.我正在使用服务器smtp.gmail.com和端口587.我们的问题是,当我将端口更改为25时,这是有效的.以下是我使用的代码:
SMTPMail "to", "cc", "TEST", "TEST"
Function SMTPMail(ByVal sTo, ByVal sCc, ByVal sSubject, ByVal sBody)
Const cdoSendUsingPickup = 1 'Send message using the local SMTP service pickup directory.
Const cdoSendUsingPort = 2 'Send the message using the network (SMTP over the network).
Const cdoAnonymous = 0 'Do not authenticate
Const cdoBasic = 1 'basic (clear-text) authentication
Const cdoNTLM = 2 'NTLM
Dim objMessage
set objMessage = CreateObject("CDO.Message")
objMessage.Subject = sSubject
objMessage.Sender = "sender"
objMessage.From = "from"
objMessage.To = sTo
objMessage.CC …Run Code Online (Sandbox Code Playgroud) 该集合与VBScript中的Dictionary有一些共同点,但它们不是一回事.
集合是Session.Contents属性等对象.
Dictionary是使用以下代码创建的对象.
Dim dictObj
Set dictObj = CreateObject("Scripting.Dictionary")
Run Code Online (Sandbox Code Playgroud)
我想找到这两个类型对象的差异和公共,以便知道如何使用它们.
我发现了这些有用的文章,但仍然没有清楚地理解使用VBScript在asp中真正的集合.
我的问题是:
VBScript中没有Collection数据类型吗?您可以创建字典但不能创建集合对象.
当使用For Each循环遍历集合时,x是什么,集合的关键还是集合项值?
for each x in Session.Contents
Run Code Online (Sandbox Code Playgroud)为什么你这样使用收藏?
Session("FirstName")
Run Code Online (Sandbox Code Playgroud)
是相同的
Session.Contents("FirstName")
Run Code Online (Sandbox Code Playgroud)收集对象的文档是什么?
我能找到的字典文档就是这个
我可能误解了收藏对象,所以请告诉我.非常感谢.