2014-12-12 1 views
1

У меня есть файл xslm с макросом, назначенным кнопке и флажком. Нажав кнопку, выполняется макрос, который является скриптом python, и вставляет данные в лист. Проблема в том, что в макросе я отключу этот флажок, но он не влияет на этот флажок, пока макрос не закончит.Почему флажок обновляется только после выполнения кода в xlwings?

Внизу приведен пример макроса:

def insert_data(): 
    wb = Workbook.caller() 

    wb.xl_workbook.ActiveSheet.OLEObjects("Checkbox1").Object.Enabled = False 

    data = pd.read_csv("data.csv") 
    Range("A1").value = data 
+0

В чем вы сомневаетесь? –

+0

Я спрашиваю, почему флажок отключен после выполнения кода. – GiannisIordanou

ответ

0

Это, как представляется, "особенность" Excel - попробовать это в VBA:

Sub Macro1() 
    ActiveSheet.OLEObjects("CheckBox1").Object.Enabled = False 
    Application.Wait (Now + TimeValue("0:00:5")) 'Sleep for 5 Seconds 
    Range("A1").Value = "Some data" 
End Sub 

Он обновляет только Checkbox после Wait процесса вместе с вызовом Range.

+0

Я не уверен, как реализовать это в функции Python. – GiannisIordanou

+0

У вас нет: это на самом деле имитирует ваш код Python, за исключением того, что я высмеивал read_csv функцией сна. Но когда вы копируете/вставляете это в редактор VBA, вы увидите, что флажок только обновляется после ожидания, то есть в конце скрипта. Кажется, это поведение VBA/Excels, а не Python. –

+0

Таким образом, флажок не может нормально обновляться. – GiannisIordanou

Смежные вопросы