Setting a batch status to "Approved" can be done at any point when working with the batch by setting  cGLBatch.Fields(GLBATCHES_fld_STATUS) = "Approved" and saving the batch.  The "Approved by" and "Last changed by" fields will be set to the user in the API connection.  This step is nessesary if you have the business rule "Journal entry batches must be approved before they can be posted" enabled in Configuration > Business Rules > Journal Entry

 
Public Sub postGLBatch()
    Dim oBatch As cGLBatch
    Set oBatch = New cGLBatch
    
    With oBatch
        .Init fe_application.SessionContext
        .Load 608  ''adjust to your cGLBatch system ID
        ''''Uncomment next two lines to set the batch as approved 
        ''.Fields(GLBATCHES_fld_STATUS) = "Approved"
        ''.Save
    End With
    
    Dim oPost As cGLPost
    Set oPost = New cGLPost
    With oPost
        '' init options for cGLPost can validate only or validate and post
        .Init fe_application.SessionContext, GLPost_optValidate
        '.Init fe_application.SessionContext, GLPost_optValidateAndPost
        
        ' returns true if validation/posting was successful
        .ProcessBatch oBatch
    End With
    
    'Cleanup
    oPost.CloseDown
    Set oPost = Nothing
    
    oBatch.CloseDown
    Set oBatch = Nothing
End Sub

VBA/API
Disclaimer: We provide programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes you are familiar with Microsoft Visual Basic and the tools used to create and debug procedures. Our Customer Support can help explain the functionality of a particular procedure, but we will not modify, or assist you with modifying, these examples to provide additional functionality. If you are interested in learning more about the VBA and API modules, contact your account manager.