【发布时间】:2012-12-01 01:07:48
【问题描述】:
我有一个带有一些功能的小 VBA 脚本,我想将其转换为单个 VBS 文件。
这是我得到的一个例子:
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Function ReadIniFileString(ByVal Sect As String, ByVal Keyname As String) As String
Dim Worked As Long
Dim RetStr As String * 128
Dim StrSize As Long
Dim iNoOfCharInIni As Integer
Dim sIniString, sProfileString As String
iNoOfCharInIni = 0
sIniString = ""
If Sect = "" Or Keyname = "" Then
MsgBox "Erreur lors de la lecture des paramètres dans " & IniFileName, vbExclamation, "INI"
Access.Application.Quit
Else
sProfileString = ""
RetStr = Space(128)
StrSize = Len(RetStr)
Worked = GetPrivateProfileString(Sect, Keyname, "", RetStr, StrSize, IniFileName)
If Worked Then
iNoOfCharInIni = Worked
sIniString = Left$(RetStr, Worked)
End If
End If
ReadIniFileString = sIniString
End Function
然后,我需要使用此函数将一些值放入字符串中。 VBS 似乎不喜欢我的任何 var 声明 ((Dim) MyVar As MyType)。
如果我能够使该代码适应 VBS,我应该也能够完成我的其余功能。如何将其调整/转换为 VBS?谢谢。
【问题讨论】:
-
如果您需要
Access.Application.Quit,您的VBScript 可能应该自动化Access 应用程序实例。如果您这样做,原始 VBA 代码可能会在 Access 实例中原封不动地工作。 -
@HansUp 很明显,我不需要
Access.Application.Quit,因为根本没有接口,我只是结束脚本,工作就完成了。但是,我仍然对您的解决方案感兴趣:运行未更改的 Access 实例。此 Access 2003 MDB 项目的目的是压缩所有其他数据库。有一个带有一些按钮的小 GUI,用于选择要压缩的数据库。它工作得很好。但是,我现在想在每个人都外出时,每周自动完成所有工作。这就是为什么我创建了一个 Windows 可以使用集成的任务计划程序运行的 VBS 脚本。 -
(很明显,VBS 脚本会在没有任何 GUI 的情况下压缩所有数据库,并将结果输出到日志文件中)
-
Set objAccess = CreateObject("Access.Application")这是 MS Access 的 COM 自动化的关键对象分配。您应该能够通过一些搜索找到大量详细的示例。 -
+1,谢谢,它看起来是解决我问题的可靠方法,我不必处理 VBS。但是仅供参考,您认为可以将
GetPrivateProfileString()函数的声明从 kernel32 lib 转换为 VBS 吗?
标签: vba ms-access vbscript converter