@SudhiRamamurthy какие-нибудь новости по этому поводу?

стройке Excel сразу после закрытия диалога, созданного с помощью displayDialogAsync, нельзя редактировать ячейки на листе. Если вы щелкнете где-нибудь за пределами рабочего листа (лента, панель задач и т. Д.), Сверните / разверните Excel или дважды щелкните ячейку, то вы сможете снова редактировать. Если вы прокручиваете, когда не можете редактировать, все в Excel становится «не кликабельным».
Кроме того, я заметил, что строка заголовка (где отображается название документа) остается серой, пока вы не щелкаете за пределами листа, как будто Excel не имеет фокуса.

Мне удалось воспроизвести это с помощью базового шаблона Excel-надстройки из Visual Studio:

В манифесте я добавил кнопку на ленту (чтобы открыть диалог):

 <Control xsi:type="Button" id="DDR.SettingsButton">
              <Label resid="DDR.SettingsButton.Label" />
              <Supertip>
                <!-- ToolTip title. resid must point to a ShortString resource. -->
                <Title resid="DDR.SettingsButton.Title" />
                <!-- ToolTip description. resid must point to a LongString resource. -->
                <Description resid="DDR.SettingsButton.Text" />
              </Supertip>
              <Icon>
                <bt:Image size="16" resid="Contoso.tpicon_16x16" />
                <bt:Image size="32" resid="Contoso.tpicon_32x32" />
                <bt:Image size="80" resid="Contoso.tpicon_80x80" />
              </Icon>

              <Action xsi:type="ExecuteFunction">
                <FunctionName>openDialog</FunctionName>
              </Action>

            </Control>

Затем, функция для файла функций:

function openDialog(event) {
    Office.context.ui.displayDialogAsync(window.location.origin + "/functions/Dialog.html", { height: 50, width: 50 }, function dialogCallback(asyncResult) {
        if (asyncResult.status !== "failed") {
           var dialog = asyncResult.value;
            dialog.addEventHandler(Office.EventType.DialogMessageReceived, function (args) {
                dialog.close();
                event.completed();
            });
            dialog.addEventHandler(Office.EventType.DialogEventReceived, function (arg) {
                switch (arg.error) {
                    case 12006:
                        event.completed();
                        break;
                    default:
                        break;
                }
            });
        }
    });
}

Затем я создал очень простой диалог:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>
    <script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.js"></script>
    <script>
        Office.initialize = function () {
            $('#buttonClose').click(close);

        };

        function close() {
            Office.context.ui.messageParent("close");
        }

    </script>

</head>
<body>
    <Button id="buttonClose">Close</Button>
</body>
</html>

Я испытал очень похожее поведение, которое было вызвано (теперь исправлено) iframe, который я встраивал в панель задач (оригинальный вопрос здесь:Невозможно редактировать ячейки после setSelectedDataAsync в Excel).

Есть ли обходной путь / исправить это?

Спасибо!

Ответы на вопрос(0)

Ваш ответ на вопрос