我有一个xls格式的Excel文件(Excel 97-2003工作簿),其中包含VBA代码。
我想将其转换为2007或更新版本的Excel,并使其支持此VBA代码。
我尝试过以下方法:
- 另存为“宏启用的.xlsm”文件
- 更改宏设置,参考这篇博客。
这样做会将文档转换为.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
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
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