Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2011, 13:53   #1
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию Не читает ячейку

Не читает ячейку, не выдает ошибку, тишина, а почему?
Код:
Sub ZXC()
    Dim s As String, месяц As String, i As Integer, a()
Application.ScreenUpdating = False
    месяц = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!$A$1"
    If месяц = "Август" Then MsgBox 555
End Sub
Месяц, проверил в [3_КВ.xls]ОБЩИЕ'!$A$1, стоит Август
valerij вне форума Ответить с цитированием
Старый 09.08.2011, 14:04   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Потому что месяц - это заданная строка, а не значение ячейки, адресом которой является эта строка.
Если файл открыт, то

Код:
месяц = ['H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!$A$1]
или
месяц = evaluate("='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!$A$1")
Если файл закрыт - в поиск по "данные из закрытой книги".
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 09.08.2011, 14:09   #3
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Если файл закрыт - в поиск по "данные из закрытой книги".
Если файл, 3_КВ.xls, закрыт, то так?
Код:
месяц = evaluate("='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!$A$1")
выдает ошибку.
valerij вне форума Ответить с цитированием
Старый 09.08.2011, 14:17   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Проще всего - ввести формулу в свободную ячейку и взять ее значение.
А вообще: http://www.google.ru/search?q=excel+...закрытой+книги
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 09.08.2011, 14:27   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Проще всего - ввести формулу в свободную ячейку и взять ее значение.
Тогда почему, так, все значения ячеек, читает из закрытой?
С открытым, 3_КВ.xls, файлом, все ОК.
Код:
Sub ZXC()
    Dim s As String, i As Integer, a(): Application.ScreenUpdating = False
    s = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!"
    a = Array("R5C6", "R6C6", "R7C6", "R3C6", "R4C6", "R9C6", "R11C6")
    b = Array("R5C2", "R6C2", "R7C2", "R3C2", "R4C2", "R9C2", "R11C2")
    c = Array("R5C4", "R6C4", "R7C4", "R3C4", "R4C4", "R9C4", "R11C4") 
    d = Array("R5C5", "R6C5", "R7C5", "R3C5", "R4C5", "R9C5", "R11C5") 
    For i = 3 To 9: Cells(i, "N").FormulaR1C1 = s & a(i - 3): _
    Cells(i, "o").FormulaR1C1 = s & b(i - 3): Cells(i, "p").FormulaR1C1 = s & c(i - 3): _
    Cells(i, "q").FormulaR1C1 = s & d(i - 3)
    Next
End Sub
valerij вне форума Ответить с цитированием
Старый 09.08.2011, 14:47   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Валера, читай ответ выше.
Цитата:
Проще всего - ввести формулу в свободную ячейку и взять ее значение.
Русским языком обьясняют - одно дело прочитать значение из закрытой книги в переменную, другое - написать формулу в ячейку. механизм получения данных принципиально разный. Во втором варианте ты данные читаешь в ячейки.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.08.2011, 14:52   #7
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub ZXC()
    Dim s As String, i As Integer, a()
    Application.ScreenUpdating = False
    s = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!"
    a = Array("R5C", "R6C", "R7C", "R3C", "R4C", "R9C", "R11C")
    For i = 3 To 9
      Cells(i, "N").FormulaR1C1 = s & a(i - 3) & "6"
      Cells(i, "o").FormulaR1C1 = s & a(i - 3) & "2"
      Cells(i, "p").FormulaR1C1 = s & a(i - 3) & "4"
      Cells(i, "q").FormulaR1C1 = s & a(i - 3) & "5"
    Next
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 09.08.2011, 15:06   #8
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Валера, читай ответ выше..
Я с этим ваще, никогда не сталкивался, поэтому темень, но ввел, так и все.
Код:
MyDate = #7/1/2011#: iMyDate = Date
     If Month(MyDate) <> Month(iMyDate) Then Exit Sub
  s = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!"

Последний раз редактировалось valerij; 09.08.2011 в 15:42.
valerij вне форума Ответить с цитированием
Старый 09.08.2011, 22:34   #9
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Валера, читай ответ выше..
Все я понял, что куда, теперь все ОК.
Всем! Спасибо!!
Код:
Sub ZXC()
Dim s As String, i As Integer, a()
    Application.ScreenUpdating = False
        s = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!"
            b = Array("R1C1"): Cells(1, "N").FormulaR1C1 = s & b(R1C1)
        If Cells(1, "N") <> "Июль" Then Exit Sub
            a = Array("R5C", "R6C", "R7C", "R3C", "R4C", "R9C", "R11C")
    For i = 3 To 9
      Cells(i, "N").FormulaR1C1 = s & a(i - 3) & "6"
        Cells(i, "o").FormulaR1C1 = s & a(i - 3) & "2"
        Cells(i, "p").FormulaR1C1 = s & a(i - 3) & "4"
      Cells(i, "q").FormulaR1C1 = s & a(i - 3) & "5"
    Next
    [N1].Value = [N1].Value: [N3:N9].Value = [N3:N9].Value: _
        [o3:o9].Value = [o3:o9].Value: [p3:p9].Value = [p3:p9].Value: _
    [q3:q9].Value = [q3:q9].Value
End Sub
valerij вне форума Ответить с цитированием
Старый 09.08.2011, 23:38   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Код:
s = "='H:\Док_Офис\Офисный Учет\2011\3_Квартал\[3_КВ.xls]ОБЩИЕ'!"
            b = Array("R1C1"): Cells(1, "N").FormulaR1C1 = s & b(R1C1)
        If Cells(1, "N") <> "Июль" Then Exit Sub
В следующем месяце (и, тем более, квартале) - новые макросы?
Каждый месяц - код "с нуля"?
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
читает с COM но ошибка yuta_86 Общие вопросы Delphi 5 17.01.2011 12:35
Кто что читает Utkin Свободное общение 22 12.01.2010 15:52
Читает вывод из консоли Consol Win Api 10 31.08.2009 08:42
не читает входную строчку DoGGy Паскаль, Turbo Pascal, PascalABC.NET 3 23.01.2009 21:46
плеер Divx не читает Xatr Софт 4 26.12.2008 03:00