关于公式调用的调用

程序中如何实现读取ini文件中的公式,然后进行计算!

例如
A=A+1

我把A+1存储到ini文件中!
然后程序执行时到INI文件中读取公式然后按公式进行计算!
——————————————————————————————

'复制以下脚本到Form1中,添加一个Command1 按钮
'执行前,请确保INI文件为"公式文件"(全路径),Section为"公式Section",Key为: "公式Key"
'即类似:
'[公式Section]
'公式Key=A=A+1

Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
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


Public Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
    ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function

'This function is used to get a key value
Private Function GetItemString(ByVal sectionname As String, ByVal KeyName As String, ByVal strIniFile As String) As String
    Dim IniString As String
    Dim retval, Status, nullpos As Integer
    IniString = String(255, " ")
    retval = GetPrivateProfileString(sectionname, KeyName, "Not Used", IniString, Len(IniString), strIniFile)
    IniString = Trim(IniString)
    'delete the null char at the end of string
    nullpos = InStr(IniString, Chr$(0))
    If nullpos > 0 Then IniString = Left$(IniString, nullpos - 1)
    If retval And Left(IniString, 8) <> "Not Used" Then
       GetItemString = IniString
    End If
End Function


Private Sub Command1_Click()
    Dim strFormula As String
    'Get formula from Ini file
    strFormula = GetItemString("公式Section", "公式Key", "公式文件")
    ExecuteLine "Dim A As Long"  '定义变量
    ExecuteLine strFormula  '执行公式,比如A=A+1等
End Sub

当然,执行脚本除了使用VBA.dll中的EbExecuteLine 外,你还可使用Microsoft Script Control(msscript.ocx)控件来处理,效果是相同的。不过使用前者只能在IDE环境运行...

阅读更多

没有更多推荐了,返回首页