Executing a function's flow
You've got a random string inside your function, it is unhelpful, you should remove that. If, however, you meant to make a comment, you should have used the comment sign (#).

For the existence of methods, combining dir and if .. in is inneficient as lists lookups are \$\mathcal{O}(n)\$ but attribute access is usually done through an instance's __dict__. You have two possibilities: either you execute it nonetheless and handle the AttributeError if it didn't exist, or use the getattr function to retrieve the method and then you execute it. The advantages of the latter being that:


You can easily encapsulate that behaviour in a function;
You can use the third parameter of getattr to provide a default value in case the attribute doesn't exist.


Something like this should be very generic, remove functionalities as you don't need them:

def do_nothing(*args, **kwargs):
    pass

def execute_method(name, instance, *args, **kwargs):
    method = getattr(name, instance, do_nothing)
    return method(*args, **kwargs)


Going through the rest of the code, you may also allow to pass the names of the files as parameters.

Proposed improvements look like:

FILES_TYPES = [
    RubricaManager,
    RectifiedRubricaManager,
    RectificationSpreadsheetManager,
    GPSManager,
]
METHODS = [
    'load_data',
    'spreadsheet_to_array',
    'headers_array',
    'get_used_indexes',
    'remove_duplicity_by_timestamp',
    'array_to_dictionary',
]


def do_nothing(*args, **kwargs):
    pass


def execute_method(name, instance, *args, **kwargs):
    method = getattr(name, instance, do_nothing)
    return method(*args, **kwargs)


def main(filenames=('File1.xlsx', 'File2.xlsx', 'File3.xlsx', 'File4.xlsx')):
    for filename, cls in zip(filenames, FILES_TYPES):
        spreadsheet = cls(filename)
        for method_name in METHODS:
            execute_method(method_name, speadsheet)