Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Выделение диапазона ячеек по кодовому слову, Выделение диапазона ячеек по кодовому слову
 
Спасибо, такую функцию еще не знаю, изучу.

Файл в приложении. Весь макрос по операциям с ячейками очень длинный, наверное выкладывать его целиком не стоит. Смысл работы макроса в том, чтобы открывать в заданной папке файлы по одному и сравнивать данные прописанного макросом диапазона в них  с моим приложенным файлом.

Например, у меня в папке лежат 4 файла: id153 Москва, id194 Казань, id168 Новгород и id155 Уфа. Макрос открыл первым файл id153 Москва и сравнивает каждую ячейку из заданного в нём диапазона с каждой ячейкой приложенного файла. И требуется, чтобы он сравнивал не с каждой ячейкой от начала до конца таблицы приложенного файла, а только с ячейками, у которых в колонке 7 написано id153. И так для остальных файлов из папки.

Не знаю как обойтись без выделения, потому что сравниваются два диапазона и счёт ячеек идёт по тому файлу, который открывает макрос, а требуемый мне сейчас диапазон получается в этом случае как бы пассивным.
Изменено: ze_storm - 25.09.2017 13:58:22
Выделение диапазона ячеек по кодовому слову, Выделение диапазона ячеек по кодовому слову
 
Добрый день,

Такая проблема: имеется таблица, в которой по определенному кодовому слову в колонке нужно выделить диапазон ячеек для дальнейших действий с этим выделением. Ячейки с этим кодовым словом обычно идут по порядку в общей таблице, но могут и "убежать" в другую её часть. Поэтому по возможности хотел предусмотреть и вариант с несвязным диапазоном.
Я пока нашёл только способ выделять связный диапазон от первого найденного слова до конца таблицы, но это не то, что нужно
Код
Range(Cells.Find("Кодовое слово"), Cells(Rows.Count, 7).End(xlUp)).Select

Буду рад любой подсказке или наводке, заранее спасибо!

Во время выполнения макроса возникает окно "Свойства канала передачи данных"
 
Помогите разобраться пожалуйста.
При выполнении приложенного макроса (или похожих на него, использующих поочередное открытие файлов) после открытия последнего файла в папке появляется окно "Свойства канала передачи данных", требующего указать какой-то источник данных. При рандомном указании источника и нажатии на ОК окно закрывается и макрос прерывается. Просто мне непонятно, откуда окно и что там указывать.
Макрос делает следующую операцию - сверяет в каждом файле указанной юзером папки в указанной пользователем вкладке данные с исходным файлом. ОШибка может как возникать, так и не возникать, если для проверки выбирать разные папки.
Кто-нибудь с таким сталкивался? С чем связа
Код
Sub CHECK_DATA()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim katal As Variant
Dim CompareRange As Variant, x As Variant, y As Variant
Dim n As Long
'Dim Ofrange As Long

Dim input_sheet As String
input_sheet = InputBox("введите период(название листа) для проверки")

   katal = GetFolderPath("Укажите каталог с файлами", ThisWorkbook.Path)
If katal <> "" Then
   Dim FS, KATALOG, FILE, MASSIV As Object
   Set FS = CreateObject("Scripting.FileSystemObject")
   Set KATALOG = FS.GetFolder(katal)
   Set MASSIV = KATALOG.Files
Range("B12").Select
    n = Empty
    Do While Range("B12").Offset(1 + n) <> Empty
    
    Range("B12").Offset(1 + n, 18).Value = Range("B12").Offset(1 + n).Value & " " & Range("B12").Offset(1 + n, 3).Value
    n = n + 1
    Loop
    
   Range("B12").Select
   Set Rng = Range(Selection, Selection.End(xlDown)).Offset(0, 18) ' выбираем в сводном файле диапазон КР+запчасть для сверки
   
  ' If Rng.Cells.Count > 20000 Then Exit Sub
 
For Each FILE In MASSIV   'пробегаемся по каждому файлу из папки
    Workbooks.Open Filename:=FILE
    On Error Resume Next
 If ActiveWorkbook.Name <> "файл1.xlsm" Then

     If Sheets(input_sheet) Is Nothing Then
     GoTo lastline
     Else
       Sheets(input_sheet).Activate
 
        Range("A1:C2000").Find("Код ЗЧ", LookIn:=xlValues).Select    'цикл поиска таблицы РТВ по привязке к коду ЗЧ
        If Selection Is Nothing Then
        GoTo lastline
        Else
        
        Set CompareRange = Range(Selection, Selection.End(xlDown))

        


         For Each x In Rng
         For Each y In CompareRange
        
         y.Offset(0, 9).Value = y.Value & " " & y.Offset(0, 3).Value
        
            If x.Value = y.Offset(0, 9).Value Then x.Offset(0, -18).Interior.Color = y.Interior.Color
         Next y
        Next x
        End If
      End If
  End If
lastline:
ActiveWorkbook.Close (False)


Next FILE

    MsgBox "Готово"
Columns("T:T").Delete

Else
    MsgBox "Каталог не выбран"
End If




Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Function GetFolderPath(Optional ByVal Title As String = "Выберите папку", _
                     Optional ByVal InitialPath As String = "c:\", _
                     Optional ByVal FilterDescription As String = "Файлы Excel", _
                     Optional ByVal FilterExtention As String = "*.xlsm*") As String
    Dim PS As String: PS = Application.PathSeparator
    With Application.FileDialog(msoFileDialogFolderPicker)
        If Not Right$(InitialPath, 1) = PS Then InitialPath = InitialPath & PS
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        If .Show <> -1 Then Exit Function
        GetFolderPath = .SelectedItems(1)
        If Not Right$(GetFolderPath, 1) = PS Then GetFolderPath = GetFolderPath & PS
    End With
End Function


Расщепить строку на несколько, если в определенной ячейке строки значения перечислены через разделитель
 
Только начал изучать эту полезную функцию Split по ссылке, смотрю - а уже и код появился.
Спасибо, работает именно так как я хотел!
Ставлю огромный лайк.
Расщепить строку на несколько, если в определенной ячейке строки значения перечислены через разделитель
 
Добрый день!

Подскажите направление мысли, как реализовать задачу:
Есть таблица заказа с множеством строк, в определенной ячейке X некоторых из них записано N артикулов деталей через разделитель: A1,A2,A3 (но может быть и просто A1, либо совсем пустое поле).
Необходимо таблицу преобразовать таким образом, чтобы одна строка с N перечисленных артикулов расщепилась на N строк с одним артикулом в каждой. При этом остальные данные со строки должны быть просто скопированы. Пример в приложении.

Если у кого-то вдруг есть наброски макросов на эту тему, буду еще больше благодарен. Не знаю даже как подступиться.
Запись гиперссылки на лист Excel в ячейку
 
Вопрос закрыт. Ошибка при копировании решается подстановкой этой же строчки  в макрос файла, В КОТОРЫЙ копируется ячейка. А не файла, из которого она копируется
Искажение адреса гиперссылки при копировании в файл, находящийся в другой папке.
 
Добрый день,
столкнулся с проблемой - при вставлении скопированной ячейки, содержащей гиперссылку, из одной книги в другую, адрес искажается. Например, в файле1 в ячейке есть гиперссылка \\Srv-s01\file1.xls
Если эту ячейку скопировать макросом и вставить с помощью xlPasteAll в любую другую книгу(файл2) из этой же папки, то клик по вставленной в файл2 ячейке откроет указанное место в файле1. Но если файл2 находится хотя бы в подпапке \\Srv-s01\Public\file1.xls , то вставленная в файл2 гиперессылка всё равно содержит адрес \\Srv-s01\file1.xls , то есть всегда директорию запускаемого файла2 и не открывается.

Есть какое-то решение у этой проблемы? Кстати, даже если копировать ячейку вручную, гиперссылка в файле2  всё равно не открывается по той же причине.
Запись гиперссылки на лист Excel в ячейку
 
Казанский, еще раз спасибо за помощь!
Запись гиперссылки на лист Excel в ячейку
 
Цитата
Казанский написал:
     .Hyperlinks.Add .Range("CI500"), ThisWorkbook.FullName, "'" & .Name & "'!A1", "screentip", .Name
Уже намного лучше! Правда теперь еще одна проблема всплыла, при копировании этой ячейки и вставке методом xlPasteAll ссылка вставляется неправильно, указывая путь к нужному файлу в ту папку, откуда я запускаю сводный файл. Хотя внутри файла с контрольной ячейкой адрес гиперссылки прописан верно.
Получается, что ссылка работает только в случае если оба файла находятся в одной папке. Скрипт, которым я копирую контрольную ячейку, ниже. Может получится каким-то образом разобраться...
Код
Sub проверка_возврата()
Application.ScreenUpdating = False
Dim WB1 As Workbook, Wb2 As Workbook
Dim x As Integer
Dim wk16 As Worksheet
On Error Resume Next
Set Wb2 = Workbooks("\\Srv-f01\svodnyi.xlsm") ' таблица, в которую копируются контрольные ячейки
Set WB1 = Application.Workbooks.Open("\\Srv-f01\Public\file1.xlsm") ' файл с контрольной ячейкой
x = 2
For Each wk16 In WB1.Worksheets
    wk16.Cells(500, 87).Copy
    With Wb2.Sheets(1).Cells(9, x)
        .PasteSpecial Paste:=xlPasteAll

    End With
    x = x + 1
Next wk16
WB1.Close (False)
Application.ScreenUpdating = True
End Sub

Цитата
Казанский написал: Вам придется из каждого листа копировать по одной ячейке. Может лучше макросом создать новый лист, в первом столбце которого создать такие гиперссылки на каждый лист? Скопировать все гиперссылки за один раз, потом лист удалить.
Хорошая идея, спасибо. Наверное так и сделаю, если получится что-то сделать с гиперссылками.
Изменено: ze_storm - 19.12.2016 16:16:27
Запись гиперссылки на лист Excel в ячейку
 
Казанский, ура, работает! А можно ли в этом же макросе путь к файлу прописать, чтобы он открывался извне, но тоже сразу на нужном листе и ячейке A1? Ну например из "C:\Users\file.xls"  
Хочу из кучи однотипных файлов копировать эти контрольные ячейки и вставлять в сводную таблицу (макрос уже написал), чтобы при клике на ссылку в этой сводной таблице открывался мой файл1 на листе, откуда скопирована эта контрольная ячейка.

Спасибо!
Запись гиперссылки на лист Excel в ячейку
 
Есть макрос, пробегающий по все вкладкам файла и записывающий в контрольную ячейку (87,500)  название листа и заданный ColorIndex.
Код
For Each wsSh In ThisWorkbook.Worksheets  'пробегаемся по вкладкам
    With wsSh
        .Tab.ColorIndex = 4 ' красим ярлыки листов в зеленый
        With .Range("CI500")
            .Interior.ColorIndex = 4 ' красим зеленкой ячейку CI500
            .Value = wsSh.Name
        End With
     End With
Next

Как сделать, чтобы в .Value записывалась еще и гиперссылка на ячейку A1 этого же пробегаемого листа?
Спасибо
При попытке запуска макроса из другого файла - первичный файл зависает
 
Sanja, спасибо еще раз. Теперь работает как часы
При попытке запуска макроса из другого файла - первичный файл зависает
 
Извиняюсь, но вопрос вроде бы по теме. В моей версии макроса для файла1 значения ниже таблицы не обрабатывались. Как и задумано. Но при вызове из файла2 давали сбой.

Макрос Sanja намного быстрее не содержит ошибок, но для моего случая получается непригодным, потому что каким-то образом обрабатывает ячейки и ниже заданного диапазона. Вот и прошу помочь.
При попытке запуска макроса из другого файла - первичный файл зависает
 
Спасибо большое! Похоже и правда проблема была в этом. Сам писать я не умею, в основном правлю макрорекордер, поэтому сплошь Activate и Select. Буду учиться.

А можно ли подредактировать код так, чтобы он не искал значения ниже своей основной таблицы Кода ЗЧ (файл1) ?
Например, в вашей версии макроса для файла1, если под анализируемой таблицей с Код ЗЧ в файле1 через пару пустых строк кто-то разместил еще и сводную (такое бывает), то даже в случае отсутствия незакрашенных ячеек основной таблицы вкладка и контрольная ячейка станут красными. Как будто нашлась незакрашенная ячейка в диапазоне. А по моему замыслу должна быть зелёной.
При попытке запуска макроса из другого файла - первичный файл зависает
 
Добрый день,
Есть файл с настроенным макросом (файл1), автоматически запускаемом при закрытии этого файла. Этот макрос проверяет незакрашенные ячейки в диапазоне, заданном относительно кодового слова "Код ЗЧ" и закрашивает ячейку (87,500) в зависимости от результата проверки диапазона. При каждом закрытии файла макрос выполняется ОК, никаких ошибок нет.

Есть файл2, который вызывает первый файл и копирует из каждой вкладки значение ячейки (87,500).

Экспериментально выяснено, что если В ПОСЛЕДНЕЙ вкладке файла1 всего одно значение для проверки, то выполнение макроса в файле2 приводит к зависанию макроса файла1. При добавления в диапазон последней вкладки файла1 второго значения ошибка пропадает и макрос файла2 выполняется до конца.

Вкладок в файле1 может быть сколько угодно, ошибается всегда на последней. Для быстроты оставил только две вкладки.
Страницы: 1
Наверх