AHK извлекает дату из Excel, затем переформатирует и отправляет в другое приложение - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу автоматизировать некоторые скучные задачи обновления дат начала / окончания в SAP с помощью AHK. Я все выяснил, единственное, что меня беспокоит, это какое-то преобразование даты / манипулирование. Это код, который извлекает информацию из активного Excel:

F3::
If !WinActive("ahk_exe EXCEL.EXE")
{
    Return
}
Xl := ComObjActive("Excel.Application")
while (Xl.Range("A" . A_Index).Value != "") 
{
    if (A_Index > 1)
    {
        ORD_NUM := Xl.Range("A" . A_Index).Value 
        SAP_BED := Xl.Range("B" . A_Index).Value 
        SAP_BSD := Xl.Range("C" . A_Index).Value            
        MsgBox %SAP_BED%
    }
}
Return

Скрипт просто извлекает данные, но когда выходит MsgBox, он говорит «15.04.2020», что является локальным форматом DateTime (м / д / гггг), но для SAP мне нужно иметь дату в формате ДД.ММ.ГГГГ. У меня есть своего рода обходной путь, когда я форматирую ячейки в Excel в соответствии с желаемым форматом, затем копирую в Блокнот и копирую / вставляю обратно в Excel, но это не окончательное решение. Я хочу все это через AHK. Кроме того, я хочу поделиться этим с некоторыми из моих коллег, но они могут иметь другой локальный формат (например, д / м / гггг). Пример данных Excel:

Order   SAP_BED SAP_BSD
1001561541  15.04.2020  10.04.2020
1001561542  22.04.2020  17.04.2020
1001550809  23.04.2020  20.04.2020

Мне кажется, что мне нужен способ превратить значение excel в объект даты в AHK, а затем использовать Format или FormatTime для создания необходимого формата даты. Любая помощь? :)

Заранее спасибо

1 Ответ

0 голосов
/ 13 апреля 2020

Вы можете использовать функции Day, Month и Year:

SAP_BED_Xl := Xl.Range("B" . A_Index).Value
SAP_BED := Xl.Day(SAP_BED_Xl) . "." . Xl.Month(SAP_BED_Xl) . "." . Xl.Year(SAP_BED_Xl)

SAP_BSD_Xl := Xl.Range("B" . A_Index).Value
SAP_BSD := Xl.Day(SAP_BSD_Xl) . "." . Xl.Month(SAP_BSD_Xl) . "." . Xl.Year(SAP_BSD_Xl)

Обратите внимание, что день и месяц не обязательно должны содержать две цифры.

...