标签: vbscript

如何使用VBScript修改Excel电子表格而不使用Excel?

我需要在没有安装Microsoft Office的PC上使用VBScript在电子表格中添加一行.

我试过[ Set objExcel = CreateObject("Excel.Application")]

由于PC上不存在Excel,因此无法创建此对象.

有没有办法在没有Excel的情况下修改电子表格?

vbscript excel

4
推荐指数
2
解决办法
2万
查看次数

Windows脚本:VBScript,DOS,JS,Python,

假设你主要是程序员和Linux系统管理员之类的C语法,你的任务是在Windows上创建一些简单的自动化任务(监视备份文件,进程监控......).您更喜欢用哪种语言编写脚本?那里有大量的VBS脚本(使用VB语法),但我更喜欢任何与C相关的东西.

您在使用Windows脚本方面有哪些最佳体验?对某种语言有任何明显的下降或上升?

javascript windows vbscript scripting

4
推荐指数
1
解决办法
2054
查看次数

VBSCRIPT数组键

我对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

arrays vbscript

4
推荐指数
2
解决办法
1万
查看次数

当没有更多对象引用时,COM是否自动卸载DLL?

例如,在语言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的可执行文件中.

c++ vb6 com vbscript scripting

4
推荐指数
1
解决办法
2021
查看次数

如何处理函数调用中的空参数?

当你像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函数替换CO​​M对象,并且对那些没有问题的COM对象进行了那些空参数调用,但是vbscript不喜欢它们.我不能改变调用,只有函数,所以我需要以某种方式处理空参数,只是不知道如何(尝试isnull没有运气,也是没有运气,并is nothing给我一个object required错误)

vbscript

4
推荐指数
1
解决办法
4394
查看次数

Classic ASP中的URL编码

可以使用VBScript转义来转发帖子(application/x-www-form-urlencoded)或多部分帖子吗?它是否相当于PHP的urlencode

vbscript http-post asp-classic

4
推荐指数
1
解决办法
1643
查看次数

将COM事件暴露给VBScript(ATL)

我使用"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)

c++ com vbscript events atl

4
推荐指数
1
解决办法
2787
查看次数

FileSystemObject中的文件集合顺序

在VBScript中,我想获取按创建日期排序的文件夹中的文件列表.我看到为了做到这一点,我需要使用一个记录集(对我来说似乎有点过分)或者自己对集合进行排序(我想我可以避免它,我希望我的代码更短).

因为我是创建文件的人,所以我使用以日期开头的名称(yyyy_mm_dd)创建它们,所以尽管如此我如果能够获得至少按名称排序的文件,那么我就完全了.不幸的是,FileSystemObject的Files集合MSDN文档没有说明集合的顺序.有没有人知道其他一些秘密文件或类似的东西可以更具体?

vbscript filesystemobject

4
推荐指数
2
解决办法
2万
查看次数

无法使用smtp.gmail.com,端口587从vbs脚本发送邮件

我试图使用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 smtp

4
推荐指数
1
解决办法
1万
查看次数

使用vbscript在asp中真正的Collection对象是什么?

该集合与VBScript中的Dictionary有一些共同点,但它们不是一回事.

集合是Session.Contents属性等对象.

Dictionary是使用以下代码创建的对象.

Dim dictObj
Set dictObj = CreateObject("Scripting.Dictionary")
Run Code Online (Sandbox Code Playgroud)

我想找到这两个类型对象的差异和公共,以便知道如何使用它们.

我发现了这些有用的文章,但仍然没有清楚地理解使用VBScript在asp中真正的集合.

使用集合

在VBA中使用Dictionary类

我的问题是:

  1. VBScript中没有Collection数据类型吗?您可以创建字典但不能创建集合对象.

  2. 当使用For Each循环遍历集合时,x是什么,集合的关键还是集合项值?

    for each x in Session.Contents
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为什么你这样使用收藏?

    Session("FirstName")
    
    Run Code Online (Sandbox Code Playgroud)

    是相同的

    Session.Contents("FirstName")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 收集对象的文档是什么?

    我能找到的字典文档就是这个

我可能误解了收藏对象,所以请告诉我.非常感谢.

vbscript asp-classic

4
推荐指数
1
解决办法
569
查看次数