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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 18:07   #1
Alekc87
 
Регистрация: 27.10.2012
Сообщений: 9
По умолчанию Импортировать данные из файла .xls

Добрый вечер!

Нужна помощь, задание следующее. Есть 2 файла Excel, из одно берется информация и записывается в другой. Макрос содержится в файле, в который переносится данные. Нужно считать из столбца данные G, если ячейка пустая и записать их в столбец С вместе со связанным с ним столбцом А который нужно записать в столбец В. Не могу найти как обратиться к ячейкам файла, у меня все время обращается к ячейкам самого файла, а нужно что бы обращался к ячейкам файла D:\запрос.xls

Sub Test1()
Open "D:\запрос.xls" For Input As #1


Заранее спасибо!
Alekc87 вне форума Ответить с цитированием
Старый 27.10.2012, 19:24   #2
ikki_pf
Форумчанин
 
Регистрация: 25.02.2012
Сообщений: 166
По умолчанию

Цитата:
Сообщение от Alekc87 Посмотреть сообщение
Не могу найти как обратиться к ячейкам файла
и где искали?
в автономной справке VBA - раздел Microsoft Excel Basic Reference -> Programming Concepts -> Cells And Ranges -> How to Reference Cells and Ranges

Цитата:
Сообщение от Alekc87 Посмотреть сообщение
Sub Test1()
Open "D:\запрос.xls" For Input As #1
нет.
Код:
Workbooks.Open Filename:= "D:\запрос.xls"
ikki_pf вне форума Ответить с цитированием
Старый 28.10.2012, 13:44   #3
Alekc87
 
Регистрация: 27.10.2012
Сообщений: 9
По умолчанию

ikki_pf, спасибо за подсказку. Только у меня теперь другая проблема, мне в ячейку А10 нового файла нужно записать значение A1 файла D:\запрос.xls, а данный код работает только с файлом запрос.xls.

Sub Кнопка1_Щелчок()
Workbooks.Open Filename:="D:\запрос.xls"
Range("A10").Value = Range("A1").Value
End Sub
Alekc87 вне форума Ответить с цитированием
Старый 28.10.2012, 14:26   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Можно так (как один из многих вариантов):
Код:
Sub Кнопка1_Щелчок()
    With GetObject("D:\запрос.xls")
        t = .Sheets("нужный лист").Range("A1").Value
        .Close 0
    End With
    Range("A10").Value = t
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.10.2012, 14:50   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Игорь, а зачем там переменная?:-)
Код:
Sub Кнопка1_Щелчок()
    With GetObject("D:\запрос.xls")
        Range("A10").Value = .Sheets("нужный лист").Range("A1").Value
        .Close 0
    End With
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 28.10.2012, 15:12   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Чтоб универсальнее. В твоём варианте при запуске из стандартного модуля не накопирует ли в тот же запрос.xls? (не проверял, но сомневаюсь...)
Но если код в модуле листа (как можно подумать, глядя на название) - тогда можно и так, без переменной.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.10.2012, 17:57   #7
Alekc87
 
Регистрация: 27.10.2012
Сообщений: 9
По умолчанию

Hugo121, kuklp огромное спасибо за помощь!!! У меня возник еще один вопрос, мне в программе нужно работать с массивом (до 1000 значений) у меня мигает экран... можно ли вынести открытие и закрытие файла за цикл?

Sub Кнопка1_Щелчок()
For i = 2 To 10
With GetObject("D:\запрос1.xls")
t = .Sheets("Лист1").Cells(i, 1).Value
.Close 0
End With
Cells(i + 2, 1).Value = t
Next i
End Sub
Alekc87 вне форума Ответить с цитированием
Старый 28.10.2012, 17:59   #8
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Нужно!_____
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 28.10.2012, 18:02   #9
Alekc87
 
Регистрация: 27.10.2012
Сообщений: 9
По умолчанию

И, не подскажете, что неправильно в этой конструкции

If t = "Слово" Then
Cells(i + 2, 1).Value = t
Alekc87 вне форума Ответить с цитированием
Старый 28.10.2012, 18:04   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Не вижу end if. Попробуйте:
Код:
If t = "Слово" Then _
Cells(i + 2, 1).Value = t
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как импортировать данные из текстового файла? Androgen13 Microsoft Office Excel 0 08.08.2011 15:44
перенести данные из xls(exel) в mysql Furyon PHP 1 29.07.2011 19:41
как сравнить данные в двух файлах .xls SlavenGVO Microsoft Office Excel 6 07.03.2011 16:48
как импортировать код из файла Lepricon69 Общие вопросы Delphi 19 11.06.2010 01:44