Вопрос по vba excel
удалить всмысле удалить ячейку и подтянуть на её место нижние? или просто значение затереть(хотя какие тут сложности могут быть)? или ты значение получаешь через впр?
[/телепат мод]
Удалить активную ячейку или ячейку с определнными (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. В файле, на который была ссылка необходимо это значение удалить. (вот тут у меня возникли сложности)