как сделать код VBA совместимым для Office 2010 - 64-битная версия и более старые офисные версии

Я рекомендую Лозоискатель . Очень легко установить, и Вы должны обнулить изменения в своем коде. Можно просмотреть количества объектов каждого типа в течение времени, списка представления живых объектов, ссылки представления для проживания объектов, всех от простого веб-интерфейса.

# memdebug.py

import cherrypy
import dowser

def start(port):
    cherrypy.tree.mount(dowser.Root())
    cherrypy.config.update({
        'environment': 'embedded',
        'server.socket_port': port
    })
    cherrypy.server.quickstart()
    cherrypy.engine.start(blocking=False)

Вы импортируете memdebug и называете memdebug.start. Это - все.

я не попробовал PySizer или Бесформенный. Я ценил бы обзоры других.

ОБНОВЛЕНИЕ

вышеупомянутый код для CherryPy 2.X, CherryPy 3.X server.quickstart, метод был удален, и engine.start не берет эти blocking флаг. Таким образом, если Вы используете CherryPy 3.X

# memdebug.py

import cherrypy
import dowser

def start(port):
    cherrypy.tree.mount(dowser.Root())
    cherrypy.config.update({
        'environment': 'embedded',
        'server.socket_port': port
    })
    cherrypy.engine.start()

5
задан Lance Roberts 23 November 2010 в 19:19
поделиться

1 ответ

Совершенствование превосходной информации/ответа от Jamie Garroch (который объясняет, как постоянный компилятор VBA7 не говорит Вам наверняка, если Ваш код работает в 64-разрядном Офисном приложении), компилятор VBA #if директива может обработать And операторы.

, Который означает, Вы не должны повторять свои 32-разрядные объявления функции. Можно просто сделать это:

    #If VBA7 And Win64 Then ...
        '64 Bit Declarations: for example ...
        Private Declare PtrSafe Sub API_CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal bytes As Long)
    #Else
        '32 Bit Declarations: for example ...
        Public Declare Sub API_CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As Any, source As Any, ByVal bytes As Long)
    #End If
-1
ответ дан 18 December 2019 в 16:30
поделиться