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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2012, 12:35   #1
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию Имя файла при переносе данных из других файлов

Здраствуйте...... Помогите мне пожалуйста !!!!

Я скачала у Вас макрос, который дает возможность собирать информацию из закрытых файлов с один. Спасибо, очень хорошо работает !!!
Мне очень нужно, стобы при ререносе данных из закрытых файлов, в конце каждой строчки указывалось имя файла,с которого перешла данная информация.

Заранее огромное спасибо
Надежда1970 вне форума Ответить с цитированием
Старый 22.09.2012, 12:58   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

И где тот макрос?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.09.2012, 13:13   #3
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию Имя файла при переносе данных из других файлов

Вот, посылаю
Вложения
Тип файла: rar СборДанных.rar (11.4 Кб, 15 просмотров)
Надежда1970 вне форума Ответить с цитированием
Старый 22.09.2012, 14:12   #4
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию Имя файла при переносе данных из других файлов

Помогите..... плз......
Надежда1970 вне форума Ответить с цитированием
Старый 22.09.2012, 15:36   #5
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию По умолчанию Имя файла при переносе данных из других файлов

Возможен и другой вариант. Например, при сохранении данных в файлах (из которых идет перенос информации в общий файл) в определенную папку в конце каждой заполненной строчки должно автоматически выставляться имя файла. Тогда дополнительно не надо будет ничего делать. Но как это сделать?
Надежда1970 вне форума Ответить с цитированием
Старый 22.09.2012, 23:40   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Попробуйте так:
Код:
Option Explicit

Sub Consolidated_Range_of_Books_and_Sheets()
    Dim iPivotRange As Range, iDestinationRange As Range, iBeginRange As Range, Sheet
    Dim iRngAddress As String, oAwb As String, DataSheet As String, iCopyAddress 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
    On Error GoTo 0
    With Application.FileDialog(msoFileDialogFilePicker)
        .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
                Sheet.Activate
                Select Case iBeginRange.Count
                Case 1
                    lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row
                    iLastColumn = Cells.SpecialCells(xlLastCell).Column
                    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).Cells.SpecialCells(xlLastCell).Row
                iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address
                Sheet.Range(iCopyAddress).Copy Destination:=ThisWorkbook.Sheets(DataSheet).Range(iRngAddress)
                ThisWorkbook.Sheets(DataSheet).Range(iRngAddress)(1).Offset(, Sheet.Range(iCopyAddress).Columns.Count) = oFile
            Next Sheet
            Workbooks(oAwb).Close False
        Next oFile
    End With
    Application.ScreenUpdating = True
End Sub
Добавил одну строку:
Код:
                ThisWorkbook.Sheets(DataSheet).Range(iRngAddress)(1).Offset(, Sheet.Range(iCopyAddress).Columns.Count) = oFile
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 10:57   #7
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию Имя файла при переносе данных из других файлов

Спасибо за помощь...... хотя это не работает

Во первых, из четырех выбранных файлов переносит почему-то только 2, пишет имя файла только в конце первой строчки и дает сбой ((
Надежда1970 вне форума Ответить с цитированием
Старый 23.09.2012, 14:07   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

"переносит почему-то только 2" - без этой строки переносит все?
"пишет имя файла только в конце первой строчки" - так и было задумано.
Уберите (1) - будет писать в каждой ячейке.
А если строку написать так:
Код:
                ThisWorkbook.Sheets(DataSheet).Range(iRngAddress).Columns(1).Offset(, Sheet.Range(iCopyAddress).Columns.Count) = oFile
То будет писать в каждой строке.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.09.2012, 14:22   #9
Надежда1970
Новичок
Джуниор
 
Регистрация: 22.09.2012
Сообщений: 8
По умолчанию Имя файла при переносе данных из других файлов


Таак...... теперь ситуация похуже....
Переносит значения следующим образом:
1. Переносит название файлов на Лист 4 (т.е. в сводном файле автоматически откываются дополнительно 3 новых листа (но они остаются пустыми)
2. Другие данные не переносятся

Надежда1970 вне форума Ответить с цитированием
Старый 23.09.2012, 14:30   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Надежда1970, что Вы там творите?
Я всего лишь добавил в существующий код одну строку, которая всего лишь заносит имя файла в одну ячейку.
И у меня всё работает.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при переносе приложения на другой компьютер kamilton Win Api 5 19.05.2011 02:11
Ошибка запуска надстройки при переносе на др. комп. kuroles Microsoft Office Excel 2 17.05.2011 11:31
Ошибка при переносе бд krigsmahtana БД в Delphi 3 10.08.2010 11:37
Проблема при переносе кода. MasterK Общие вопросы Delphi 1 08.04.2010 18:05
Суммирование определенных ячеек при переносе Pilot Microsoft Office Excel 5 17.07.2008 12:46