我一直在使用以下代码来检查对话框是否已打开
If Window(window_name).Dialog(dialog_name).Exist = False
Then '' //here qtp waits..
Window(window_name).WinMenu("Menu").Select menu_name
End If
Run Code Online (Sandbox Code Playgroud)
此代码是为了避免在每次运行代码期间重新打开同一个对话框。但是 qtp 运行会等待大约 10 - 15 秒,然后进入下一步。我们可以通过什么方式避免这种情况?
如果对话框未打开,则将单击菜单以打开对话框。
我已经在 C# 中声明了一个 COM 可见类。代码如下:
[ComVisible(true)]
public class AComVisibleClass : TheParentClass
{
public bool SomeFunc(string id)
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
此类由工厂类实例化,也可通过 COM 访问。
但是,如果我尝试在 VB 脚本文件中访问,DISP_E_UNKNOWNNAME则会引发异常。
这是我们在这里工作的一个预先存在的图书馆上的一个新课程。所有其他类都可以通过 COM 访问。整个库被编译成一个程序集文件。我已经使用 注册了新程序集regasm,但我仍然收到此异常。
我尝试使用 VS2008 调试 COM 调用。工厂类似乎能够实例化AComVisibleClass. 仅当工厂尝试执行时才会抛出上述异常SomeFunc。
我知道这听起来有点(?)有点含糊,但我不能在这里公开真正的代码。如果有人需要更多信息,请询问我。
我正在尝试使用经典 ASP 将当前目录的绝对路径打印到浏览器屏幕。(相当于 PHP 的 echo 命令)。
我在下面代码的最后一行收到此错误:“Microsoft VBScript 运行时错误 '800a01a8' 所需对象:'文档'/Research/ro.asp,第 17 行”
我尝试了几种不同的方法来打印到屏幕(如 WScript.StdOut.Write),它们也返回相同的错误。
我怀疑我的错误与它是一个对象的事实有关,并且对象需要不同的打印到屏幕的方法。
任何人对此有何想法?
示例文件.asp=
<%
Dim szCurrentRoot: szCurrentRoot= ""
'Create the File System Ojbect
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Get the Absolute Path of the current directory
szCurrentRoot = objFSO.GetParentFolderName(Server.MapPath(Request.ServerVariables("URL")))
'Print to the screen. The following line is line 17 which causes the error
Document.Write(szCurrentRoot)
%>
Run Code Online (Sandbox Code Playgroud)
经过更多研究,我找到了我的问题的答案:
Response.Write(szCurrentRoot)
这种写入浏览器屏幕的方式是成功的。
如何检查文件夹中是否存在任何名称的文件?我也想忽略子文件夹。
谢谢。
编辑:
认为我已经明白了,但任何贡献也受到赞赏......
If Folder.Files.Count > 0 Then
'Do something
Run Code Online (Sandbox Code Playgroud) 是否可以使用shell.run命令以管理员身份运行指定程序?
例如:
shell.run(cmd.exe) <---Run this as admin
shell.run(Notepad) <---Run this as normal
Run Code Online (Sandbox Code Playgroud)
我知道我可以执行脚本以管理员身份运行,但这意味着该脚本中的所有内容都以管理员身份执行。
我的另一个选择是分离脚本并以管理员身份运行一个脚本,并在该脚本中包含需要以管理员身份运行的内容,然后调用另一个脚本来正常运行并运行该脚本。
这是我试图实现的事件序列: 计划任务 - 每天在同一时间运行并启动 VBScript VBScript 启动 Excel 工作簿并运行宏。这是片段-
Set xlApp = CreateObject ("Excel.Application")
xlApp.Visible = False
Set xlBook = xlApp.Workbooks.Open (xlFilePath,0,False)
xlApp.Run "Main"
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我手动运行任务,它运行良好。当我未登录服务器时运行计划任务时,它不会启动 excel。当没有用户登录时,我必须在上面的代码中更改什么才能启动 excel?我已将 Excel 宏安全性设置为低。
Excel 2003 和 Windows Server2003 64
我正在尝试使用 VBScript 将此处说“A1”的单元格格式复制到第一行的所有单元格,但xlValues未定义错误。
代码
ob3.Range("A1").Copy
ob3.Range("A1").EntireRow.PasteSpecial(xlValues) 'error here for that constants
Run Code Online (Sandbox Code Playgroud)
你能帮我吗?
谢谢,
使用Excel v16
我试图通过用回车替换像tilde~这样的字符来格式化单元格中的文本,其中完成的结果将是多行.这实际上是多行和多列的合并单元格,如下所示
这是我在宏中使用的脚本
Sub FindReplaceAll()
Sheets("Template").Select
Range("A34").Select
iStr = ActiveCell.Value
For i = 1 To Len(iStr)
If Mid(iStr, i, 1) = "~" Then
rtStr = rtStr + vbCr
Else
rtStr = rtStr + Mid(iStr, i, 1)
End If
Next i
ActiveCell.Value = rtStr
End Sub
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到的所有内容都与删除了波形符相同.使用换行文本格式化单元格.不知道从哪里开始.
我有一个VBScript文件,我使用它在数组中有很多值.
recipes = Array("chicken soup","turkey","mash potatoes","yams","stuffing")
Run Code Online (Sandbox Code Playgroud)
在多行上声明此数组的正确方法是什么,类似于:
recipes = Array("chicken soup",
"turkey",
"mash potatoes",
"yams",
"stuffing")
Run Code Online (Sandbox Code Playgroud)
这样我就可以在每一行写评论(或者这是正确的吗?):
recipes = Array("chicken soup", 'broth, noodles, chicken
"turkey", 'YUMMY i love turkey
"mash potatoes", 'butter, sour cream, cook 20mins
"yams", 'dont forget the marshmallows
"stuffing") 'celery, jiffy cornbread, broth
Run Code Online (Sandbox Code Playgroud) 使用批处理,我想创建一个包含昨天日期的变量,正是我需要这种格式:“ YYYY_MM_DD”
我成功使用了以下格式:YYYYMMDD
我创建了一个vbs文件“ yesterday.vbs”:
d = date() - 1
wscript.echo year(d) * 10000 + month(d) * 100 + day(d)
Run Code Online (Sandbox Code Playgroud)
在我的批处理文件中,我调用了代码:
REM ---------------- Yesterday VAR ---------------------
for /f %%a in ('cscript //nologo yesterday.vbs') do set yesterday=%%a
Run Code Online (Sandbox Code Playgroud)
我想要这种格式:
YYYY_MM_DD
提前致谢,