Вопрос по vba excel
[телепат мод]
удалить всмысле удалить ячейку и подтянуть на её место нижние? или просто значение затереть(хотя какие тут сложности могут быть)? или ты значение получаешь через впр?
[/телепат мод]
удалить всмысле удалить ячейку и подтянуть на её место нижние? или просто значение затереть(хотя какие тут сложности могут быть)? или ты значение получаешь через впр?
[/телепат мод]
сложность открыть файл по ссылке, которая указана в ячейке и обратиться к нужной ячейк во внешнем файле.
Удалить активную ячейку или ячейку с определнными (x,y) не является проблемой
можно переформулировать задачу так:
как находясь в ячейке, имеющей ссылку на внешний файл перейти по этой ссылке и удалить значение ячейки куда эта ссылка ведет.
т.е. мы стоим на activecell
Удалить активную ячейку или ячейку с определнными (x,y) не является проблемой
можно переформулировать задачу так:
как находясь в ячейке, имеющей ссылку на внешний файл перейти по этой ссылке и удалить значение ячейки куда эта ссылка ведет.
т.е. мы стоим на activecell
У ячейки есть свойство Formula. Извлекаем оттуда путь к файлу и адрес ячейки. Открываем файл с помощью Workbooks.Open(filepath удаляем в нем нужную ячейку.
Извлекаем оттуда путь к файлу и адрес ячейкивот здесь я и засел.
Вернее так. Так как сам excel делает это изящно и непринужденно, и есть такая функция
ThisWorkbook.LinkSources (передает массив всех внешних файлов в данной книге) я думал можно как то просто это реализовать.
Тогда подскажите, пожалуйста, как из перемнной типа string вытащить то, что нужно
вот типичная формула:
='C:\Users\Администратор\Desktop\Склад\Курьеры\[Иванов Андрей.xlsx]Лист1'!$B$2
а если даже конкретнее вытащить "Иванов Андрей.xlsx" как имя файла (директория мне известна относительно исходного файла всегда) и $B$2 (и как к этому адресу обратиться в vba)?
Dim CellFormula As String
CellFormula = ActiveSheet.Cells(1, 2).Formula
Dim FileNameStartPos As String
Dim FileNameEndPos As String
FileNameStartPos = InStr(1, CellFormula, "[") + 1
FileNameEndPos = InStr(1, CellFormula, "]")
Dim FileName As String
FileName = Mid(CellFormula, FileNameStartPos, FileNameEndPos - FileNameStartPos)
MsgBox FileName
Dim CellAddress As String
CellAddress = Mid(CellFormula, Len(CellFormula) - 3, 4)
MsgBox ActiveSheet.Range(CellAddress).Value
уже сам сделал.
Но все равно спасибо.
Тему можно закрывать.
Но все равно спасибо.
Тему можно закрывать.
уже сам сделал.В последней строке количество слогов поправь.
Но все равно спасибо.
Тему можно закрывать.
Упорно читаю в названии YOBA EXCEL.
Оставить комментарий
donkyhot
Есть файл A.xlsx, в котором в некоторых ячейках содержатся ссылки на другие файлы 1.xlsx, 2.xlsx, 3.xlsx, ...Пример ссылки на ячейку: ='C:\[1.xlsx]Лист1'!$B$2
Соответсвенно в файле 1.xlsx на листе 1 в ячейке B2 содержится некое числовое значение
Задача.
нам известно какое-то числовое значение id.
Мы наверняка знаем, что файл A.xlsx содержит данное значение через ссылку на некий файл из набора (1.xlsx, 2.xlsx, 3.xlsx, ...)
необходимо:
1. В файле A.xlsx найти ячейку со значением id(это понятно как делать). Сделать так, чтобы в данной ячейке осталось толькоз начение id без ссылки на внешний файл (в принципе тоже понятно)
2. В файле, на который была ссылка необходимо это значение удалить. (вот тут у меня возникли сложности)