#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"