Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 | 2 |

 

  Вопрос: макрос Excel Добавлено: 28.08.06 11:00  

Автор вопроса:  Verd | ICQ: 276115817 
Здравствуйте, люди умные,люди добрые...
Помогите, пожалуйста, написать макрос...
Задача :
Есть документ, в нем, к примеру, в 13-й колонке прописаны ссылки на другие документы Excel.
Необходимо :
1 )Последовательно загрузить информацию,находящуюся в прописанных ссылках.
2 )там, где при загрузке файл не обнаружен, остаются ячейки с надписью "##ССЫЛКА" - их нужно ОЧИСТИТЬ и поменять в них цвет на СЕРЫЙ ( по моему, это 15 цвет )
3 )все формулы уничтожить, файл "инактивировать" (это делается режимом копирования себе на голову: Выделить все, Специальная вставка, Значения)
Заранее благодарен.

Ответить

  Ответы Всего ответов: 17  

Номер ответа: 1
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #1 Добавлено: 28.08.06 13:23
файл "инактивировать" (это делается режимом копирования себе на голову:
Это когда как??? Можно подробнее...

Ответить

Номер ответа: 2
Автор ответа:
 Незнайка



Вопросов: 7
Ответов: 188
 Профиль | | #2 Добавлено: 28.08.06 13:50
1 - все нормально: не прошло и года осознал смысл "инактивировать". Обязуюсь взять сие на вооружение. Но появился другой вопрос: что означает:
Последовательно загрузить информацию

Ответить

Номер ответа: 3
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #3 Добавлено: 28.08.06 14:19
т.е. в колонке прописаны ссылки на документы,нужно чтобы данные обновлялись по очередно, начиная с 1-й ячейки столбца,в котором прописаны ссылки и дальше вниз. Спасибо.

Ответить

Номер ответа: 4
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #4
Добавлено: 28.08.06 15:40
1 )Последовательно загрузить информацию,находящуюся в прописанных ссылках.
Чтобы, как ты выражаешься, последовательно загрузить информацию - нужно поочередно заново прописать в этих ячеках ссылки на то, что тебе нужно.
2 )там, где при загрузке файл не обнаружен, остаются ячейки с надписью "##ССЫЛКА" - их нужно ОЧИСТИТЬ и поменять в них цвет на СЕРЫЙ ( по моему, это 15 цвет )
А это - просто пробежать по столбцу, проверяя дл каждой ячейки ее значение.

Или сортировкой(тоже неплохо)

Ответить

Номер ответа: 5
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #5 Добавлено: 28.08.06 16:47
Александр,если Вам не сложно, напишите как именно пробежать по столбцу,и по каким критериям проверять значение ячейки?

Ответить

Номер ответа: 6
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #6 Добавлено: 29.08.06 11:31
По первому пункту я так понимаю должен быть примерно следующий код :
Range( "" ).Select "Выбираем нужный столбец)
ActiveCell.Offset(0, 0).Activate "Делаем активной 1-ю ячейку нужного столбца"
ActiveCell.FormulaR1C1 = "" указываем директорию,из которой нужно копировать

Ответить

Номер ответа: 7
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #7
Добавлено: 30.08.06 00:22
Первое и второе вместе:
Set fs = Application.FileSearch
With fs
    .LookIn = "C:\Documents and Settings\"
    .Filename = "Книга11"
End With

    Range("K4";).FormulaR1C1 = Application.FileSearch.FoundFiles.Count
    If Range("K4";).FormulaR1C1 = "0" Then
        Range("k4";).FormulaR1C1 = ""
        With Selection.Interior
            .ColorIndex = 48
            .Pattern = xlSolid
        End With
    Else
        Range("k4";).Value = _
        "='C:\Documents and Settings\[Книга11.xls]Лист1'!$B$7"
    End If
End Sub

Второе отдельно:
    Range("K5";).Select
    If ActiveCell.Text = "#ÑÑÛËÊÀ!" Then
        ActiveCell.Value2 = ""
        With Selection.Interior
            .ColorIndex = 48
            .Pattern = xlSolid
        End With
    End If
    Range("K6";).Select


3 )все формулы уничтожить
Вроде этого:
Dim s As String
s = Range("k1";).Text
Range("k1";).Value = ""
Range("k1";).Value = s

файл "инактивировать"
Это Незнейка понял...

Ответить

Номер ответа: 8
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #8
Добавлено: 30.08.06 00:25
Второе отдельно:
    
Range("K5";).Select
    If ActiveCell.Text = "#ÑÑÛËÊÀ!" Then
        ActiveCell.Value2 = ""
        With Selection.Interior
            .ColorIndex = 48
            .Pattern = xlSolid
        End With
    End If
    Range("K6";).Select


Здесь
    If ActiveCell.Text = "#ÑÑÛËÊÀ!" Then
Я имел в виду:
If ActiveCell.Text = "#ССЫЛКА!"
Then
Ну в общем ясно, да?

Ответить

Номер ответа: 9
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #9 Добавлено: 30.08.06 13:58
Спасибо, Александр

Ответить

Номер ответа: 10
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #10
Добавлено: 30.08.06 16:18
Спасибо, Александр

Пожалуйста, заходи ещё.

P.S. Все мы начинаем в VBA, а приходим - на С++

Ответить

Номер ответа: 11
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #11 Добавлено: 30.08.06 16:55
Александр, всё бы хорошо,но есть одно но:
в листе 4 колонки,150 строк.Может быть как-нибудь можно проверять ячейки на содержание (#Ссылка!) в режиме цикла?
Пробовал по всякому,не получается...

Ответить

Номер ответа: 12
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #12 Добавлено: 30.08.06 16:58
P.S. воспользовался 2-м пунктом отдельно, пробовал указать Range("A1:F150:).Select, ячейки всего диапазона закрашиваются, а содержимое очищается только в 1-й.

Ответить

Номер ответа: 13
Автор ответа:
 Verd



ICQ: 276115817 

Вопросов: 3
Ответов: 11
 Профиль | | #13 Добавлено: 30.08.06 17:02
Инактивация ячеек описывается следующим кодом(может,кому интересно) :
Range(" ";).Select
      ActiveCell.Offset(0, 0).Range(" : ";).Select
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Ответить

Номер ответа: 14
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #14
Добавлено: 30.08.06 17:52
Пробовал по всякому,не получается...
Помсавь вначале макроса
    Range("A1";).Select
И в остальном коде, что я написал замени все Range(///) на ActiveCell(i, j), где i и j - переменные цикла (строк и столбцов - соответственно)

Ответить

Номер ответа: 15
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #15
Добавлено: 30.08.06 17:52
Пробовал по всякому,не получается...
Помсавь вначале макроса
    Range("A1";).Select
И в остальном коде, что я написал замени все Range(///) на ActiveCell(i, j), где i и j - переменные цикла (строк и столбцов - соответственно)

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам