第二个文档出现Word VBA运行时错误5460.在全局模板中添加

时间:2018-07-09 16:22:34

标签: vba ms-word office365 word-vba

对于一个客户,我创建了一个带有“新文档”按钮的全局模板,该模板显示了一个用户表单,允许用户从模板的选择中创建新文档,例如信件,发票等 最近,我们添加了报告选项。

从此用户窗体执行的代码非常简单,例如使用

int main(int argc, char** argv)
{
    int test = 0;
    const char* title = "GBemu";
    bool isRunning = true;
    SDL_Event mainEvent;
    HWND windowHandler;
    MSG menuHandler;

    //Initialize the SDL Subsystems
    if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
    {
        SDL_Log("Unable to initialize SDL subsystems: %s", SDL_GetError());
        return 1;
    }

    //Create a window pointer + allocate a window object to it.
    SDL_Window* mainWindow = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1000, 1000, NULL);
    windowHandler = utilities::getSDLWinHandle(mainWindow);

    //Activate the menu bar of the window
    utilities::ActivateMenu(windowHandler);

    SDL_Renderer* mainRenderer = SDL_CreateRenderer(mainWindow, -1, 0);
    SDL_SetRenderDrawColor(mainRenderer, 0, 0, 0, 255);
    SDL_RenderPresent(mainRenderer);

    while (isRunning)
    {
        SDL_PollEvent(&mainEvent);
        switch (mainEvent.type)
        {
        case SDL_WINDOWEVENT_CLOSE:
            mainEvent.type = SDL_QUIT;
            SDL_PushEvent(&mainEvent);
            break;
        case WM_COMMAND:

        case SDL_QUIT:
            isRunning = false;
            break;
        };

        utilities::getMenuEvent(&menuHandler,windowHandler);
    }


    return 0;
}

创建新文档。

按照我的标准,报告模板非常复杂,带有AutoNew和AutoClose宏,一个EventClassModule,它可以写入和读取CustomDocumentProperties,打开几个特定的​​Word文档,从中复制文本并将其粘贴到Report文档中等

首次创建新报告时,它按计划工作;但是第二次(在同一Word会话中)使用“报告”选项,则会发生“运行时错误5460”。然后,其他任何文档选项都返回相同的错误。

退出Word并启动一个新的Word会话会将所有内容恢复为正常,直到再次调用报表模板为止。

奇怪的是,当直接从资源管理器中创建基于它的新文档时,报表模板可以正常工作而不会出现错误。

使用Windows 7 Pro的Word 2016(365)中会出现问题,而使用Windows 10的Word 2013中不会发生此问题。

曾经经历过这样的事情吗?非常感谢您的帮助。


运行时错误5460:'发生了文件错误。'

无法进行调试。

“报告”模板有数千行代码,我无法找出是导致错误的“报告”模板中的代码,还是“全局”模板中的代码。

如上所述,Report模板在Explorer中使用时效果很好,并且在2013年通过Global模板调用时,一切也都可以在这里使用。


问题解决了! 我遵循了@macropod的建议,并添加了路径。 代替仅使用

Documents.Add Template:="Letter.dotm", NewTemplate:=False

我将代码更改为:

'…
If OptionButton3.Value = True Then
    Documents.Add Template:="Report.dot", NewTemplate:=False
End If
'…

谢谢!

0 个答案:

没有答案