Excel Applescript для выбора столбца

#excel #applescript

#excel #applescript

Вопрос:

Я пытаюсь создать excel (версия 16.4) applescript, который удаляет первые несколько строк, затем переходит к последнему столбцу, который будет иметь заголовок «Примечания», и копирует этот текст в столбец F.

Первая часть работает нормально, но я не могу заставить ее выбрать столбец для меня. Проблема, с которой я столкнулся, заключается в том, что столбец «Примечания» находится в разных местах в каждом файле. Я могу перейти к столбцу заметок, но ничто из того, что я пробовал, не позволяет Excel выбрать весь столбец с этого момента, я просто получаю сообщение об ошибке «Объект, к которому вы пытаетесь получить доступ, не существует». Я скопировал свои последние 2 applescripts для этого фрагмента ниже; Я попробовал несколько вариантов, но безуспешно.

ВЕРСИЯ 1

 -- find "Notes" column
            set lastRow to count of rows of used range of active sheet
            set theEnd to get end range "A1" direction toward the right
            select theEnd
            set x to (get column entry index of the active cell)
            select column x
  

ВЕРСИЯ 2

     --Find "Notes" column
            set findNotes to "Notes"
            set searchRange to range ("A1:AN1")
            set foundColumn to find searchRange what findNotes with match case
            goto reference foundColumn

    --Duplicate Column
            set addr to get address (column 1 of selection)
            set addr to text 2 thru 2 of addr
            -- e.g range $H:$H"
            set myWantedRange to "$" amp; addr amp; ":$" amp; addr
            set src to range myWantedRange of sheet 1 of workbook "Workbook1"
            set dst to range column 6 of sheet 1 of workbook "Workbook1"

            copy range src destination dst
  

Ответ №1:

Попробуйте это:

По сути, он получает последний столбец используемого диапазона и проверяет, является ли его первая ячейка «Notes». Если это так, то он копирует значения ячеек столбца, а затем помещает их в соответствующие ячейки столбца 6 используемого диапазона. Все ограничено используемым диапазоном.

 tell application "Microsoft Excel"
    tell worksheet 1 of workbook 1
        with timeout of 20 seconds
            
            set cour to columns of used range
            
            set lCol to last item of cour
            set fCol to item 6 of cour
            
            if value of cell 1 of lCol is "Notes" then
                
                set lcv to value of lCol
                set value of fCol to lcv
                
            end if
        end timeout
    end tell
end tell
  

cour это ограниченный список столбцов. На его последний столбец (lCol) будет ссылаться таким образом:

 column "$J$1:$J$30" of application "Microsoft Excel"
  

Тогда это просто вопрос установки значений столбца F. Я использую Excel 2011, но здесь это не должно быть проблемой. Строки тайм-аута предназначены только для остановки процесса в случае, если вы попытаетесь работать со всем столбцом.

Я не думаю, что вам нужно что-то выбирать, но если вы хотите выбрать любой из столбцов (в пределах используемого диапазона), просто используйте один из них:

 select fcol
select lcol
select column "$J$1:$J$30"