2016-12-27 20 views
5

Mam plik xls excel (excel 97-2003 skoroszytu), w którym istnieje kod vba. Chcę przekonwertować go na wersję 2007 lub nowszą programu Excel z włączonym tym kodem vba. Próbowałem:konwerter excel 2003 do 2007 lub najnowsza wersja z VBA

  1. Zapisz jako plik makro-enabled.xlsm
  2. zmienił ustawienia makr z this blogu. zmienił dokument w .xlsm, ale na wartościach komórki (dla którego uruchomiono makro) wyświetla # NAZWA zamiast wartości. orignal ekran plik strzał: enter image description here

przekształcone: enter image description here siedzę tutaj.

kod makr:

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 

Edited zrzut ekranu VBA: enter image description here

+3

Pomóż nam cię posłuchać, ** połóż kod, który się nie powiedzie. ** –

+0

@ Gary'sStudent, proszę sprawdzić, załadowałem kod. –

+1

Które zawiedzie, gdzie? Czy działają poprawnie, ale po prostu zwracają błąd "# Name"? Czy umieszczasz jedną z funkcji w tej komórce? Który? – BruceWayne

Odpowiedz

1

Sprawdź w VB Editor -> Narzędzia -> Referencje czy są jakieś biblioteki wybranych począwszy od brakujące: enter image description here

Jeśli tak, to odznacz ją i spróbuj ponownie.

0

Musisz umieścić kod w "ThisWorkbook", jeśli chcesz wywołać go w arkuszu.

Powiązane problemy