使用VBA将Excel 2003转换为2007或最近的版本

我有一个xls excel文件(excel 97-2003工作簿),其中有vba代码。 我想将其转换为2007年或更高版本的Excel与启用此VBA代码。 我努力了:

  1. 另存为macro-enabled.xlsm文件
  2. 从这个博客更改macros的设置。 它改变了.xlsm中的文档,但在单元格的值上(macros正在运行),它显示#NAME而不是值。 orignal文件截图: 在这里输入图像说明

转化: 在这里输入图像说明 我被困在这里。

macros的代码:

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 

VBA编辑截图: 在这里输入图像说明

检查VB编辑器 – >工具 – >参考如果从MISSING开始select任何库: 在这里输入图像说明

如果是,则取消select并重试。

如果要在工作表中调用代码,则需要将代码放在“ThisWorkbook”中。