Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/прописать в макросе название книги с ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
прописать в макросе название книги с ячейки
Imba_Ra Дата: Воскресенье, 02.12.2012, 13:05 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Здравствуйте!
Очень нуждаюсь в Вашей помощи!
Есть макрос, он работает, но нужно его немного подправить.
Чтобы можно было:
1) копировать данные из закрытой книги (мой только при открытой копирует)
2) убрать расширение чтобы он не привязывался к определенному расширению книги. (т.е хотелось бы если просто если указываешь имя файла, такое как есть в ячейки)

[vba]
Code
Sub импорт()
On Error Resume Next
Set c = Workbooks(Cells(1, 2) & ".xlsx").Worksheets("Лист1").Range("A1:K20").Find("Товар", LookIn:=xlValues) ' тут бы хотелось убрать расширение т.е эту строчку & ".xlsx", т.к файлы бывают различного расширения
If Not c Is Nothing Then
Application.Goto c, True
Workbooks("Книга2.xlsm").Worksheets("Отчет").Cells(4, 2) = Cells(ActiveCell.Row, ActiveCell.Column + 1)
End If
Windows("Книга2.xlsm").Activate
End Sub
[/vba]
К сообщению приложен файл: 7984004.xlsx (8.4 Kb) · 1215340.xlsm (15.8 Kb)


Сообщение отредактировал Pelena - Воскресенье, 02.12.2012, 13:15
 
Ответить
СообщениеЗдравствуйте!
Очень нуждаюсь в Вашей помощи!
Есть макрос, он работает, но нужно его немного подправить.
Чтобы можно было:
1) копировать данные из закрытой книги (мой только при открытой копирует)
2) убрать расширение чтобы он не привязывался к определенному расширению книги. (т.е хотелось бы если просто если указываешь имя файла, такое как есть в ячейки)

[vba]
Code
Sub импорт()
On Error Resume Next
Set c = Workbooks(Cells(1, 2) & ".xlsx").Worksheets("Лист1").Range("A1:K20").Find("Товар", LookIn:=xlValues) ' тут бы хотелось убрать расширение т.е эту строчку & ".xlsx", т.к файлы бывают различного расширения
If Not c Is Nothing Then
Application.Goto c, True
Workbooks("Книга2.xlsm").Worksheets("Отчет").Cells(4, 2) = Cells(ActiveCell.Row, ActiveCell.Column + 1)
End If
Windows("Книга2.xlsm").Activate
End Sub
[/vba]

Автор - Imba_Ra
Дата добавления - 02.12.2012 в 13:05
ABC Дата: Воскресенье, 02.12.2012, 14:46 | Сообщение № 2
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
smile автор файла Ерик...???

[vba]
Code
Sub импорт()
     Dim wb As Workbook
     Application.ScreenUpdating = 0
     Set wb = GetObject(Cells(2, 2).Value & "\" & Cells(1, 2).Value & ".xls")
     Set c = wb.Worksheets("Лист1").Range("A1:K20").Find("Товар", LookIn:=xlValues)    'Диапазон ячеек ГДЕ ищем
     If Err <> 0 Then MsgBox "Не указано имя файла или он не открыт"    'любая ошибка
     If Not c Is Nothing Then
         Application.Goto c, True
         ThisWorkbook.Worksheets("Отчет").Cells(4, 2).Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value    'Row +  - адрес от критерия
     End If
     ThisWorkbook.Activate
     wb.Close
     Application.ScreenUpdating = 1
End Sub
[/vba]


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет
 
Ответить
Сообщениеsmile автор файла Ерик...???

[vba]
Code
Sub импорт()
     Dim wb As Workbook
     Application.ScreenUpdating = 0
     Set wb = GetObject(Cells(2, 2).Value & "\" & Cells(1, 2).Value & ".xls")
     Set c = wb.Worksheets("Лист1").Range("A1:K20").Find("Товар", LookIn:=xlValues)    'Диапазон ячеек ГДЕ ищем
     If Err <> 0 Then MsgBox "Не указано имя файла или он не открыт"    'любая ошибка
     If Not c Is Nothing Then
         Application.Goto c, True
         ThisWorkbook.Worksheets("Отчет").Cells(4, 2).Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value    'Row +  - адрес от критерия
     End If
     ThisWorkbook.Activate
     wb.Close
     Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - ABC
Дата добавления - 02.12.2012 в 14:46
Imba_Ra Дата: Воскресенье, 02.12.2012, 17:54 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Quote (ABC)
smile автор файла Ерик...???

Да) smile
Спс большое за решение!
Quote (ABC)
Value & ".xls")

А как можно сделать так чтобы не привязываться к определенному расширению ? т.к бывают файлы с разным расширением (.xls или .xlsx или .xlsm)

Quote (Imba_Ra)
On Error Resume Next

А почему эту строчку убрали? без нее выходит Debug если что то не указали, а это пугает сотрудников))
Её ведь можно указать в начале? или это не правильно?
 
Ответить
Сообщение
Quote (ABC)
smile автор файла Ерик...???

Да) smile
Спс большое за решение!
Quote (ABC)
Value & ".xls")

А как можно сделать так чтобы не привязываться к определенному расширению ? т.к бывают файлы с разным расширением (.xls или .xlsx или .xlsm)

Quote (Imba_Ra)
On Error Resume Next

А почему эту строчку убрали? без нее выходит Debug если что то не указали, а это пугает сотрудников))
Её ведь можно указать в начале? или это не правильно?

Автор - Imba_Ra
Дата добавления - 02.12.2012 в 17:54
Imba_Ra Дата: Воскресенье, 02.12.2012, 17:59 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

ABC, Кстати Даулет мы ведь с одного города!)
 
Ответить
СообщениеABC, Кстати Даулет мы ведь с одного города!)

Автор - Imba_Ra
Дата добавления - 02.12.2012 в 17:59
ABC Дата: Воскресенье, 02.12.2012, 18:47 | Сообщение № 5
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Воскресенье, 02.12.2012, 20:12
 
Ответить
Сообщение

Автор - ABC
Дата добавления - 02.12.2012 в 18:47
Imba_Ra Дата: Воскресенье, 02.12.2012, 19:41 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

ABC, Супер! то что нужно!
И последний вопрос. т.к значений копировать таким макросом нужно достаточное большое количество, подскажите как мне быть?
Например нужно еще скопировать еще сумму и срок. (Книга1)
Сам пытался разобраться, но не выходит...
 
Ответить
СообщениеABC, Супер! то что нужно!
И последний вопрос. т.к значений копировать таким макросом нужно достаточное большое количество, подскажите как мне быть?
Например нужно еще скопировать еще сумму и срок. (Книга1)
Сам пытался разобраться, но не выходит...

Автор - Imba_Ra
Дата добавления - 02.12.2012 в 19:41
ABC Дата: Воскресенье, 02.12.2012, 20:06 | Сообщение № 7
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
если порядок как в первом файле
тогда поменяйте
.Cells(4, 2).Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value
на
Range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row + 3, ActiveCell.Column + 1)).Copy _
Destination:=.Cells(4, 2)
ud отредактируйте

[vba]
Code
Sub ud()
        With ThisWorkbook.Worksheets("Отчет")
            .Range("B1:B2").Value = ""
            .Range("B4:B6").Value = ""
        End With
End Sub
[/vba]

5-ом посте добавил комент


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Воскресенье, 02.12.2012, 20:14
 
Ответить
Сообщениеесли порядок как в первом файле
тогда поменяйте
.Cells(4, 2).Value = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value
на
Range(Cells(ActiveCell.Row, ActiveCell.Column + 1), Cells(ActiveCell.Row + 3, ActiveCell.Column + 1)).Copy _
Destination:=.Cells(4, 2)
ud отредактируйте

[vba]
Code
Sub ud()
        With ThisWorkbook.Worksheets("Отчет")
            .Range("B1:B2").Value = ""
            .Range("B4:B6").Value = ""
        End With
End Sub
[/vba]

5-ом посте добавил комент

Автор - ABC
Дата добавления - 02.12.2012 в 20:06
Imba_Ra Дата: Вторник, 04.12.2012, 21:19 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

В общем получилось следующее с помощью ABC,
Этот макрос использовал в начале



Этот для копировании остальных значений

Этим запускал все макросы

[vba]
Code

Sub Click
Call get1
Call get2
End Sub
[/vba]

В конце в последнем макросе добавил строчку, чтобы закрыть книгу откуда копировал т.к в начале в первом макросе ее открыли
'wb.Close 0

Есть один вопрос, как можно при копировании вставлять значения? (бывают значения в виде формул и при копировании копируются эти формулы)


Сообщение отредактировал Imba_Ra - Вторник, 04.12.2012, 23:17
 
Ответить
СообщениеВ общем получилось следующее с помощью ABC,
Этот макрос использовал в начале



Этот для копировании остальных значений

Этим запускал все макросы

[vba]
Code

Sub Click
Call get1
Call get2
End Sub
[/vba]

В конце в последнем макросе добавил строчку, чтобы закрыть книгу откуда копировал т.к в начале в первом макросе ее открыли
'wb.Close 0

Есть один вопрос, как можно при копировании вставлять значения? (бывают значения в виде формул и при копировании копируются эти формулы)

Автор - Imba_Ra
Дата добавления - 04.12.2012 в 21:19
RAN Дата: Вторник, 04.12.2012, 21:36 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Запишите рекордером специальная вставка - значения.
И спрячьте эту простыню в спойлер.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЗапишите рекордером специальная вставка - значения.
И спрячьте эту простыню в спойлер.

Автор - RAN
Дата добавления - 04.12.2012 в 21:36
ABC Дата: Вторник, 04.12.2012, 21:49 | Сообщение № 10
Группа: Друзья
Ранг: Обитатель
Сообщений: 397
Репутация: 112 ±
Замечаний: 0% ±

Excel 2007
как Андрей написал
Cells(ActiveCell.Row, ActiveCell.Column + 12).Copy _
Destination:=.Cells(19, 3)

Cells(ActiveCell.Row, ActiveCell.Column + 1).Copy
.Cells(19, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False


MS Excel 2007 and 2010...
-------------------------------
С Уважением, Даулет


Сообщение отредактировал ABC - Вторник, 04.12.2012, 21:59
 
Ответить
Сообщениекак Андрей написал
Cells(ActiveCell.Row, ActiveCell.Column + 12).Copy _
Destination:=.Cells(19, 3)

Cells(ActiveCell.Row, ActiveCell.Column + 1).Copy
.Cells(19, 3).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Автор - ABC
Дата добавления - 04.12.2012 в 21:49
Imba_Ra Дата: Вторник, 04.12.2012, 22:00 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

ABC, Ок, спс!

RAN, сейчас научусь как это делать и исправлю
 
Ответить
СообщениеABC, Ок, спс!

RAN, сейчас научусь как это делать и исправлю

Автор - Imba_Ra
Дата добавления - 04.12.2012 в 22:00
Imba_Ra Дата: Вторник, 04.12.2012, 22:55 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

вроде освоил)
 
Ответить
Сообщениевроде освоил)

Автор - Imba_Ra
Дата добавления - 04.12.2012 в 22:55
Imba_Ra Дата: Вторник, 04.12.2012, 22:56 | Сообщение № 13
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

.


Сообщение отредактировал Imba_Ra - Вторник, 04.12.2012, 23:04
 
Ответить
Сообщение.

Автор - Imba_Ra
Дата добавления - 04.12.2012 в 22:56
Dragokas Дата: Среда, 05.12.2012, 01:35 | Сообщение № 14
Группа: Проверенные
Ранг: Новичок
Сообщений: 14
Репутация: 25 ±
Замечаний: 0% ±

2003
Один вопрос:
[vba]
Code
Application.Goto c, True
[/vba]
- это трюк, чтобы не использовать метод FindNext я так понимаю?
 
Ответить
СообщениеОдин вопрос:
[vba]
Code
Application.Goto c, True
[/vba]
- это трюк, чтобы не использовать метод FindNext я так понимаю?

Автор - Dragokas
Дата добавления - 05.12.2012 в 01:35
Imba_Ra Дата: Пятница, 07.12.2012, 20:16 | Сообщение № 15
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Quote (Imba_Ra)
FName = Cells(1, 2).Value & ".xlsx" 'имя файла

Друзья подскажите как можно убрать расширение т.к сделать так чтобы можно было работать с любым расширением

Quote (Imba_Ra)
Sub get2()
Set c = Workbooks(Cells(4, 4) & ".xlsx").Worksheets("Резюме").Range("A6:AY20").Find("Программа кредитования:", LookIn:=xlValues) 'Диапазон ячеек ГДЕ ищем
If Not c Is Nothing Then
Application.GoTo c, True
With ThisWorkbook.Worksheets("Compare")
Cells(ActiveCell.Row, ActiveCell.Column + 12).Copy _
Destination:=.Cells(19, 3) 'копируем данные
End With
Else: ThisWorkbook.Worksheets("Compare").Range("C19").Value = ""
End If
ThisWorkbook.Activate
'если где та вылетить ошибка, тогда очищаем данные с ячеек "C18"
GoTo Ends:
Errors1:
ThisWorkbook.Worksheets("Compare").Range("C19").Value = ""
Ends:
Application.ScreenUpdating = 1
End Sub

И как в конце закрыть активную книгу, которая была открыта в первом макросе скрыта
Quote (Imba_Ra)
Set wb = GetObject(FPath & "\" & FName) 'открываем скрыто
 
Ответить
Сообщение
Quote (Imba_Ra)
FName = Cells(1, 2).Value & ".xlsx" 'имя файла

Друзья подскажите как можно убрать расширение т.к сделать так чтобы можно было работать с любым расширением

Quote (Imba_Ra)
Sub get2()
Set c = Workbooks(Cells(4, 4) & ".xlsx").Worksheets("Резюме").Range("A6:AY20").Find("Программа кредитования:", LookIn:=xlValues) 'Диапазон ячеек ГДЕ ищем
If Not c Is Nothing Then
Application.GoTo c, True
With ThisWorkbook.Worksheets("Compare")
Cells(ActiveCell.Row, ActiveCell.Column + 12).Copy _
Destination:=.Cells(19, 3) 'копируем данные
End With
Else: ThisWorkbook.Worksheets("Compare").Range("C19").Value = ""
End If
ThisWorkbook.Activate
'если где та вылетить ошибка, тогда очищаем данные с ячеек "C18"
GoTo Ends:
Errors1:
ThisWorkbook.Worksheets("Compare").Range("C19").Value = ""
Ends:
Application.ScreenUpdating = 1
End Sub

И как в конце закрыть активную книгу, которая была открыта в первом макросе скрыта
Quote (Imba_Ra)
Set wb = GetObject(FPath & "\" & FName) 'открываем скрыто

Автор - Imba_Ra
Дата добавления - 07.12.2012 в 20:16
Serge_007 Дата: Пятница, 07.12.2012, 20:18 | Сообщение № 16
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (Imba_Ra)
как можно убрать расширение т.к сделать так чтобы можно было работать с любым расширением

В настройках Windows


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (Imba_Ra)
как можно убрать расширение т.к сделать так чтобы можно было работать с любым расширением

В настройках Windows

Автор - Serge_007
Дата добавления - 07.12.2012 в 20:18
Imba_Ra Дата: Пятница, 07.12.2012, 20:29 | Сообщение № 17
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 20% ±

Quote (Serge_007)
В настройках Windows

т.е нужно у всех сотрудников настраивать Windows?
А можно это сделать в самом макросе?
 
Ответить
Сообщение
Quote (Serge_007)
В настройках Windows

т.е нужно у всех сотрудников настраивать Windows?
А можно это сделать в самом макросе?

Автор - Imba_Ra
Дата добавления - 07.12.2012 в 20:29
Serge_007 Дата: Пятница, 07.12.2012, 20:31 | Сообщение № 18
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Я таких способов не знаю


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЯ таких способов не знаю

Автор - Serge_007
Дата добавления - 07.12.2012 в 20:31
RAN Дата: Пятница, 07.12.2012, 21:41 | Сообщение № 19
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Quote (Imba_Ra)
А как можно сделать так чтобы не привязываться к определенному расширению ? т.к бывают файлы с разным расширением (.xls или .xlsx или .xlsm)

1.
[vba]
Code
FName = Cells(1, 2).Value & ".xls*"
[/vba]
2.
[vba]
Code
If FName like Cells(1, 2).Value  then
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 07.12.2012, 21:45
 
Ответить
Сообщение
Quote (Imba_Ra)
А как можно сделать так чтобы не привязываться к определенному расширению ? т.к бывают файлы с разным расширением (.xls или .xlsx или .xlsm)

1.
[vba]
Code
FName = Cells(1, 2).Value & ".xls*"
[/vba]
2.
[vba]
Code
If FName like Cells(1, 2).Value  then
[/vba]

Автор - RAN
Дата добавления - 07.12.2012 в 21:41
Serge_007 Дата: Пятница, 07.12.2012, 21:44 | Сообщение № 20
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Андрей, так только экселевские файлы можно (да и то не все),
Quote (Imba_Ra)
сделать так чтобы можно было работать с любым расширением
не получится


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеАндрей, так только экселевские файлы можно (да и то не все),
Quote (Imba_Ra)
сделать так чтобы можно было работать с любым расширением
не получится

Автор - Serge_007
Дата добавления - 07.12.2012 в 21:44
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!