Hi,


Does it exist a way to export AFL formulas' names and associated code and the 
layouts names and Charts' names loaded into AB, from AB to Word or Excel ?

In the same spirit, here what VBA does.

Below, the first EXCEL VBA procedure export all the WorkBook's macros code into 
Word.
The second macro list all the procedures' names and the modules' names into a 
new XL sheet.


I have got a VBA macro that export all AB formulas 
c:\amibroker\formula\custom\*.afl to Word. But nothing about exporting loaded 
formulas.


Best regards




'======================
Sub CopyToWord()

'Add reference "Microsoft Word X.0 Object Library")
'and "Microsoft Visual Basic For Applications Extensibility "

'L Longre

  Dim VBC As VBComponent, W As Word.Application
  Dim S As Word.Selection
  On Error Resume Next
  Set W = GetObject(Class:="Word.Application")
  On Error GoTo 0
  If W Is Nothing Then
    Set W = New Word.Application
    W.Visible = True
  End If
  W.ScreenUpdating = False
  On Error GoTo Fin
  W.Activate
  If W.Documents.Count = 0 Then W.Documents.Add
  Set S = W.ActiveWindow.Selection
  For Each VBC In ThisWorkbook.VBProject.VBComponents
    With VBC.CodeModule
      If .CountOfLines And .Name <> "CopieCodeVersWord" Then
        S.InsertAfter vbCrLf _
        & "==================================" & vbCrLf$ & _
        "Nom du module : " & VBC.Name & vbCrLf$ _
        & "==================================" & vbCrLf$ & _
          vbCrLf$ & .Lines(1, .CountOfLines) & vbCrLf$
      End If
    End With
  Next VBC
Fin:
  W.ScreenUpdating = True
End Sub


'-----------------------------------
Sub ListMacrosModule()

'add référence :   
'"Microsoft Visual Basic For Application Extensibility 5.3"

'michdenis

Dim Wbk As Workbook, Sh As Worksheet
Dim VBCodeMod As Object, Comp As Object, C As Object
Dim StartLine As Long, i As Long, ProcName As String

'Identifie le classeur source où sont les procédures
Set Wbk = Workbooks("VBAexemple2.XLS") 'ou ce que tu veux

'Détruit la feuille si elle existe déjà.
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("MesProcs").Delete
Application.DisplayAlerts = True

'Ajoute une feuille au projet où sera fait le listing
Set Sh = Wbk.Worksheets.Add
'Nomme la feuille
Sh.Name = "MesProcs"

i = 1
'Boucle sur toutes les modules du projet, incluant le formulaire.
For Each C In Wbk.VBProject.VBComponents
  Set Comp = C
  sds = C.Name
  Set VBCodeMod = Wbk.VBProject.VBComponents(C.Name).CodeModule

  With VBCodeMod
    StartLine = .CountOfDeclarationLines + 1
    Do Until StartLine >= .CountOfLines
      Sh.Cells(i, 1).Value = .ProcOfLine(StartLine, vbext_pk_Proc)
      StartLine = StartLine + .ProcCountLines(.ProcOfLine(StartLine, _
              vbext_pk_Proc), vbext_pk_Proc)
      Sh.Cells(i, 1).Offset(, 1).Value = .Name
      StartLine = StartLine + 1
      i = i + 1
    Loop
  End With
Next

Set VBCodeMod = Nothing: Set Comp = Nothing: Set C = Nothing
Set Wk = Nothing: Set Sh = Nothing
End Sub
'-----------------------------------


Reply via email to