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

 

= Мир MS Excel/слияние нескольких книг в одну таблицу - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
слияние нескольких книг в одну таблицу
Vika101928 Дата: Среда, 11.06.2025, 10:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Добрый день, уважаемые форумчане! Подскажите, пожалуйста, в чем может быть проблема и как ее решить.
Уже несколько лет я пользуюсь макросом, который из нескольких маленьких файликов Excel копирует данные в один большой файл. Сам макрос ниже:

Sub gatheringData()
Dim strTitle As String
Dim IngCounter As Long
Dim fileName As Variant
Dim IngLastRow As Long
Dim wbCentralWorkbook As Workbook
Dim wbDataWorkbook As Workbook

strTitle = "Выбор файлов с данными для сбора"
fileName = Application.GetOpenFilename(FileFilter:="All files (*.*), *.*", MultiSelect:=True, Title:="Files to Merge")

Set wbCentralWorkbook = ThisWorkbook
If IsArray(fileName) = True Then
Application.ScreenUpdating = False

For IngCounter = LBound(fileName) To UBound(fileName)

Set wbDataWorkbook = Workbooks.Open(fileName(IngCounter))

IngLastRow = wbDataWorkbook.Worksheets("Лист1").Range("A" & wbDataWorkbook.Worksheets("Лист1").Rows.Count).End(xlUp).Row
wbDataWorkbook.Worksheets("Лист1").Range("A2:F" & IngLastRow).Copy

IngLastRow = wbCentralWorkbook.Worksheets("СВОД").Range("B" & wbCentralWorkbook.Worksheets("СВОД").Rows.Count).End(xlUp).Row
wbCentralWorkbook.Worksheets("СВОД").Range("B" & IngLastRow + 1).PasteSpecial (xlPasteAll)

wbDataWorkbook.Close (True)
Next IngCounter
MsgBox "Готово!"

Application.ScreenUpdating = True
Else:
MsgBox "Файлы не выбраны!"
End If
End Sub



Но с недавнего времени стали попадаться файлы, при попытке открытия их макросом возникает ошибка:
Run-time error "1004":
Method "Open" of object "Workbooks" failed

и когда нажимаешь Debug то открывается макрос и строка выделяется:
Set wbDataWorkbook = Workbooks.Open(fileName(IngCounter))

Как этого можно избежать?
Файл, при загрузке которого возникает ошибка во вложении.
К сообщению приложен файл: fajl_dlja_zakaza_zapreshhennog.xlsx (10.6 Kb)


Сообщение отредактировал Vika101928 - Среда, 11.06.2025, 14:34
 
Ответить
СообщениеДобрый день, уважаемые форумчане! Подскажите, пожалуйста, в чем может быть проблема и как ее решить.
Уже несколько лет я пользуюсь макросом, который из нескольких маленьких файликов Excel копирует данные в один большой файл. Сам макрос ниже:

[vba]
Sub gatheringData()Dim strTitle As StringDim IngCounter As LongDim fileName As VariantDim IngLastRow As LongDim wbCentralWorkbook As WorkbookDim wbDataWorkbook As WorkbookstrTitle = "Выбор файлов с данными для сбора"fileName = Application.GetOpenFilename(FileFilter:="All files (*.*), *.*"; MultiSelect:=Тrue; Title:="Files to Merge")Set wbCentralWorkbook = ThisWorkbookIf IsArray(fileName) = Тrue ThenApplication.ScreenUpdating = FalseFor IngCounter = LBound(fileName) To UBound(fileName)Set wbDataWorkbook = Workbooks.Open(fileЧame(IngCounter))IngLastRow = wbDataWorkbook.Worksheets("Лист1").Range("A" & wbDataWorkbook.Worksheets("Лист1").Rows.Count).End(xlUp).RowwbDataWorkbook.Worksheets("Лист1").Range("A2:F" & IngLastRow).CopyIngLastRow = wbCentralWorkbook.Worksheets("СВОД").Range("B" & wbCentralWorkbook.Worksheets("СВОД").Rows.Count).End(xlUp).RowwbCentralWorkbook.Worksheets("СВОД").Range("B" & IngLastRow + 1).PasteSpecial (xlPasteAll)wbDataWorkbook.Close (Тrue)Next IngCounterMsgBox "Готово!"Application.ScreenUpdating = ТrueElse:MsgBox "Файлы не выбраны!"End IfEnd Sub
[/vba]

Но с недавнего времени стали попадаться файлы, при попытке открытия их макросом возникает ошибка:
Run-time error "1004":
Method "Open" of object "Workbooks" failed

и когда нажимаешь Debug то открывается макрос и строка выделяется:
Set wbDataWorkbook = Workbooks.Open(fileName(IngCounter))

Как этого можно избежать?
Файл, при загрузке которого возникает ошибка во вложении.

Автор - Vika101928
Дата добавления - 11.06.2025 в 10:34
and_evg Дата: Среда, 11.06.2025, 12:52 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 481
Репутация: 83 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Цитата Vika101928, 11.06.2025 в 10:34, в сообщении № 1 ( писал(а)):
в чем может быть проблема

Первая проблема в оформлении кода тегами в соответствии с правилами форума, а вторая это похоже файл "битый" у меня при открытии неудалось прочитать содержимое.
 
Ответить
СообщениеДобрый день.
Цитата Vika101928, 11.06.2025 в 10:34, в сообщении № 1 ( писал(а)):
в чем может быть проблема

Первая проблема в оформлении кода тегами в соответствии с правилами форума, а вторая это похоже файл "битый" у меня при открытии неудалось прочитать содержимое.

Автор - and_evg
Дата добавления - 11.06.2025 в 12:52
Vika101928 Дата: Среда, 11.06.2025, 14:44 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Добрый день.
Благодарю Вас за комментарий, переоформила исходное сообщение.
Если файл, который я пытаюсь автоматом открыть и скопировать макросом, попытаться открыть просто, без макроса, то он открывается. Но открывается через ошибку:
"Ошибка в части содержимого в книге Файл для заказа Запрещенного Ассортимента .xlsx Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку "Да".
Нажимаешь "Да" и файл открывается. Как побороть эти файлы я не знаю, мучала своих программистов.
Часть файлов приходит от партнеров вот такая дефектная и макрос их не затягивает, а часть отлично отрабатывается макросом.
Нормальный файл (который загружается макросом) во вложении.
К сообщению приложен файл: zakaz_zapreshhennogo_novyj_obr.xlsx (9.8 Kb)
 
Ответить
СообщениеДобрый день.
Благодарю Вас за комментарий, переоформила исходное сообщение.
Если файл, который я пытаюсь автоматом открыть и скопировать макросом, попытаться открыть просто, без макроса, то он открывается. Но открывается через ошибку:
"Ошибка в части содержимого в книге Файл для заказа Запрещенного Ассортимента .xlsx Выполнить попытку восстановления? Если вы доверяете источнику, из которого получена книга, нажмите кнопку "Да".
Нажимаешь "Да" и файл открывается. Как побороть эти файлы я не знаю, мучала своих программистов.
Часть файлов приходит от партнеров вот такая дефектная и макрос их не затягивает, а часть отлично отрабатывается макросом.
Нормальный файл (который загружается макросом) во вложении.

Автор - Vika101928
Дата добавления - 11.06.2025 в 14:44
NikitaDvorets Дата: Среда, 18.06.2025, 11:20 | Сообщение № 4
Группа: Авторы
Ранг: Ветеран
Сообщений: 625
Репутация: 143 ±
Замечаний: 0% ±

Excel 2019
Добрый день.

Цитата
из нескольких маленьких файликов Excel


Для решения задачи было бы полезно добавить эти файлики.
 
Ответить
СообщениеДобрый день.

Цитата
из нескольких маленьких файликов Excel


Для решения задачи было бы полезно добавить эти файлики.

Автор - NikitaDvorets
Дата добавления - 18.06.2025 в 11:20
and_evg Дата: Среда, 18.06.2025, 11:59 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 481
Репутация: 83 ±
Замечаний: 0% ±

Excel 2007
Добрый день.
Попробуйте эту процедурку

Sub gatheringData()
Dim strTitle As String
Dim IngCounter As Long
Dim MyfileName As Variant
Dim IngLastRow As Long
Dim wbCentralWorkbook As Workbook
Dim wbDataWorkbook As Workbook

strTitle = "Выбор файлов с данными для сбора"
MyfileName = Application.GetOpenMyfileName(FileFilter:="All files (*.*), *.*", MultiSelect:=True, Title:="Files to Merge")

Set wbCentralWorkbook = ThisWorkbook
If IsArray(MyfileName) = True Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False

For IngCounter = LBound(MyfileName) To UBound(MyfileName)

Set wbDataWorkbook = Workbooks.Open(fileName:=MyfileName(IngCounter), corruptload:=2)

IngLastRow = wbDataWorkbook.Worksheets("Лист1").Range("A" & wbDataWorkbook.Worksheets("Лист1").Rows.Count).End(xlUp).Row
wbDataWorkbook.Worksheets("Лист1").Range("A2:F" & IngLastRow).Copy

IngLastRow = wbCentralWorkbook.Worksheets("СВОД").Range("B" & wbCentralWorkbook.Worksheets("СВОД").Rows.Count).End(xlUp).Row
wbCentralWorkbook.Worksheets("СВОД").Range("B" & IngLastRow + 1).PasteSpecial (xlPasteAll)

wbDataWorkbook.Close (True)
Next IngCounter
MsgBox "Готово!"

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Else:
MsgBox "Файлы не выбраны!"
End If
End Sub

 
Ответить
СообщениеДобрый день.
Попробуйте эту процедурку
[vba]
Sub gatheringData()Dim strTitle As StringDim IngCounter As LongDim MyfileName As VariantDim IngLastRow As LongDim wbCentralWorkbook As WorkbookDim wbDataWorkbook As WorkbookstrTitle = "Выбор файлов с данными для сбора"MyfileName = Application.GetOpenMyfileЧame(FileFilter:="All files (*.*), *.*"; MultiSelect:=Тrue; Title:="Files to Merge")Set wbCentralWorkbook = ThisWorkbookIf IsArray(MyfileName) = Тrue ThenApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor IngCounter = LBound(MyfileName) To UBound(MyfileName)Set wbDataWorkbook = Workbooks.Open(fileName:=MyfileЧame(IngCounter); corruptload:=2)IngLastRow = wbDataWorkbook.Worksheets("Лист1").Range("A" & wbDataWorkbook.Worksheets("Лист1").Rows.Count).End(xlUp).RowwbDataWorkbook.Worksheets("Лист1").Range("A2:F" & IngLastRow).CopyIngLastRow = wbCentralWorkbook.Worksheets("СВОД").Range("B" & wbCentralWorkbook.Worksheets("СВОД").Rows.Count).End(xlUp).RowwbCentralWorkbook.Worksheets("СВОД").Range("B" & IngLastRow + 1).PasteSpecial (xlPasteAll)wbDataWorkbook.Close (Тrue)Next IngCounterMsgBox "Готово!"Application.DisplayAlerts = ТrueApplication.ScreenUpdating = ТrueElse:MsgBox "Файлы не выбраны!"End IfEnd Sub
[/vba]

Автор - and_evg
Дата добавления - 18.06.2025 в 11:59
  • Страница 1 из 1
  • 1
Поиск:

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