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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 12:53   #1
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию Формирование реестра из данных первых листов книг

Здравствуйте.
Подскажите пожалуйста. Есть папка, в ней создаются файлы, где на первом листе счет-фактура (файлы 1,2) и файл с реестром (реестр). В счет-фактуре для реестра нужны определенные данные ячеек.
Как написать макрос, чтобы после создания нового файла с счет-фактурой (счет-фактура создается путем копирования предыдущей) при первом сохранении данные автоматически переносились в реестр, реестр после переноса открывается.
Вложения
Тип файла: rar образцы.rar (39.9 Кб, 11 просмотров)

Последний раз редактировалось z21231904; 03.06.2010 в 14:57.
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 14:27   #2
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Подумалось.
Ведь в принципе все решается путем нахождения местоположения ячейки, зная которую можно вычислить местоположение ячеек с нужными данными.
Подскажите, други, как программно найти ячейку с текстом "ааа" и перейти на ячейку в трех столбцах от неё в этой же строке?
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 15:11   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Цитата:
Сообщение от z21231904 Посмотреть сообщение
как программно найти ячейку с текстом "ааа" и перейти на ячейку в трех столбцах от неё в этой же строке?
Sheets("Лист1").Usedrange.Find("aaa ",,xlvalues,xlWhole).offset(,3).Sel ect
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 03.06.2010, 15:29   #4
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от The_Prist Посмотреть сообщение
Sheets("Лист1").Usedrange.Find("aaa ",,xlvalues,xlWhole).offset(,3).Sel ect
Ясно, спасибо.
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 16:22   #5
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Добрался до кода
If Sheet.Name Like sSheetName Then
Sheet.Activate
Select Case iBeginRange.Count
Case 1
lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
iLastColumn = Cells.SpecialCells(xlLastCell).Colu mn
iCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address
Case Else
iCopyAddress = iBeginRange.Address
lLastrow = iBeginRange.Rows.Count
iLastColumn = iBeginRange.Columns.Count
End Select
lLastRowMyBook = ThisWorkbook.Sheets(DataSheet).Cell s.SpecialCells(xlLastCell).Row + 1
iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
Sheet.Range(iCopyAddress).Copy Destination:=ThisWorkbook.Sheets(Da taSheet).Range(iRngAddress)
End If

а он для диапазонов, а как его переделать для ячеек? Помогите.

Последний раз редактировалось z21231904; 03.06.2010 в 17:28.
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 18:39   #6
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

И так и эдак, не получается

Вот код, где нужно выборку диапазонов заменить на выборку ячейки

Sub Consolidated_Range_of_Books_and_She ets()
Dim iPivotRange As Range, iDestinationRange As Range, iBeginRange As Range, Sheet
Dim iRngAddress As String, oAwb As String, DataSheet As String, _
iCopyAddress As String, sSheetName As String, oFile
Dim lLastrow As Long, lLastRowMyBook As Long
Dim iLastColumn As Integer
Dim Str() As String

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
DataSheet = ThisWorkbook.ActiveSheet.Name
On Error Resume Next
Set iBeginRange = Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _
"1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _
vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8)
If iBeginRange Is Nothing Then Exit Sub
sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр")
If sSheetName = "" Then sSheetName = "*"
On Error GoTo 0
With Application.FileDialog(msoFileDialo gFilePicker)
.AllowMultiSelect = True
.InitialFileName = "*.*"
.Title = "Выберите файлы"
If .Show = False Then Exit Sub
For Each oFile In .SelectedItems
Workbooks.OpenText Filename:=oFile
oAwb = Dir(oFile, vbDirectory)

Application.ScreenUpdating = False
Workbooks(oAwb).Activate
For Each Sheet In Sheets
If Sheet.Name Like sSheetName Then
Sheet.Activate
Select Case iBeginRange.Count
Case 1
lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
iLastColumn = Cells.SpecialCells(xlLastCell).Colu mn
iCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address
Case Else
iCopyAddress = iBeginRange.Address
lLastrow = iBeginRange.Rows.Count
iLastColumn = iBeginRange.Columns.Count
End Select
lLastRowMyBook = ThisWorkbook.Sheets(DataSheet).Cell s.SpecialCells(xlLastCell).Row + 1
iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
Sheet.Range(iCopyAddress).Copy Destination:=ThisWorkbook.Sheets(Da taSheet).Range(iRngAddress)
End If
Next Sheet
Workbooks(oAwb).Close False
Next oFile
End With
Application.ScreenUpdating = True
End Sub

Вопрос как?
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 21:12   #7
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Понимаете в чем проблема - непонятно, что именно Вам надо скопировать и перенести в Реестр. Я вот файлы примеров посмотрел - а там нет предполагаемого результата...
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 03.06.2010, 21:22   #8
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Виноват. добавил желаемый результат.
Вложения
Тип файла: rar образцы.rar (40.7 Кб, 15 просмотров)
z21231904 вне форума Ответить с цитированием
Старый 03.06.2010, 22:02   #9
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Вот. Смотрите.
Вложения
Тип файла: rar Consolidate.rar (18.6 Кб, 20 просмотров)
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 03.06.2010, 22:13   #10
z21231904
Пользователь
 
Регистрация: 17.05.2010
Сообщений: 10
По умолчанию

Да, то что нужно. Хотел отблагодарить "в самый раз", но там от вас счет нужен.

И, простите за наглость, можно как нибудь из "Счет-фактура № 2 от 10 мая 2000г." выделить дату в фомате "дата" и поместить в столбец дата?
z21231904 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение книг и листов по имени листа MaxxVer Microsoft Office Excel 8 14.01.2011 13:09
Объединение книг и некоторых листов ? vovik07 Microsoft Office Excel 5 20.05.2010 11:52
Сбор данных из разных книг 804040 Microsoft Office Excel 2 19.04.2010 15:33
копирование листов из закрытых книг mephist Microsoft Office Excel 4 10.07.2009 17:18
Копирование данных из реестра delphin100 Общие вопросы Delphi 5 06.05.2008 16:36