使用VBA将excel 2003转换为2007或最新版本

Nom*_*mad 5 excel vba excel-vba

我有一个xls excel文件(excel 97-2003工作簿),其中有vba代码.我想在启用此vba代码的情况下将其转换为2007或更新版本的excel.我试过了:

  1. 另存为macro-enabled.xlsm文件
  2. 从改变宏的设置,这个博客.它更改了.xlsm中的文档,但是在单元格的值(运行宏的位置)上,它显示了#NAME而不是值.原始文件屏幕截图: 在此输入图像描述

转化: 在此输入图像描述 我被困在这里.

宏代码:

1.moveAcross.bas

    Attribute VB_Name = "MoveAcross"
Sub GoToValues()
Attribute GoToValues.VB_Description = "Macro recorded 23-01-2001 by Murad Assaggaf"
Attribute GoToValues.VB_ProcData.VB_Invoke_Func = " \n14"
'
' GoToValues Macro
' Macro recorded 23-01-2001 by Murad Assaggaf
'

'
    ActiveWindow.SmallScroll ToRight:=13
    ActiveWindow.LargeScroll Down:=-2
    ActiveWindow.SmallScroll Down:=-3
    ActiveWindow.SmallScroll ToRight:=2
    Range("X6").Select
End Sub
Sub ReturnToProfileArea()
Attribute ReturnToProfileArea.VB_Description = "Macro recorded 23-01-2001 by Murad Assaggaf"
Attribute ReturnToProfileArea.VB_ProcData.VB_Invoke_Func = " \n14"
'
' ReturnToProfileArea Macro
' Macro recorded 23-01-2001 by Murad Assaggaf
'

'
    Range("G5").Select
End Sub
Run Code Online (Sandbox Code Playgroud)

2.Demand.bas

Attribute VB_Name = "Demand"
Function Demand(m0, m1, m2, m3, m4, m5, m6, EndInv, ST, Fraction)
    Static months(7) As Variant

    months(0) = m0
    months(1) = m1
    months(2) = m2
    months(3) = m3
    months(4) = m4
    months(5) = m5
    months(6) = m6

    Dim summy
    summy = 0

    If Fraction > 0 Then
        summy = months(ST + 1) * Fraction
    End If

    For n = 0 To ST
        summy = summy + months(n)
    Next n

    Demand = summy - EndInv

    If Demand < 0 Then
        Demand = 0
    End If
    End Function
Run Code Online (Sandbox Code Playgroud)

3.Coverage.bas

Attribute VB_Name = "Coverage"
Function Coverage(m0, m1, m2, m3, m4, m5, m6, EndInv, ST, Fraction)

    Static months(7) As Variant

    months(0) = m0
    months(1) = m1
    months(2) = m2
    months(3) = m3
    months(4) = m4
    months(5) = m5
    months(6) = m6

    Dim summy
    summy = 0

    If Fraction > 0 Then
        summy = months(ST) * Fraction
    End If

    For n = 0 To (ST - 1)
        summy = summy + months(n)
    Next n

    Coverage = EndInv / (summy / (ST + Fraction))

End Function
Run Code Online (Sandbox Code Playgroud)

编辑VBA的截图: 在此输入图像描述

小智 1

检查 VB 编辑器 --> 工具 --> 参考是否从 MISSING 开始选择了任何库: 在此输入图像描述

如果是,则取消选择并重试。