powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает копирование
11 сообщений из 11, страница 1 из 1
Не работает копирование
    #38141299
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все доброго дня,
подскажите кто-нибудь, что у меня не так в коде - копирование из нескольких файлов екзеля в один, при первом проходе всё копируется без проблем, при втором, когда копирую без шапки (после Else) выдает ошибку - см. скрин.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
    Set xlApp = New Excel.Application

    '================================
    sFind = OpenFile
    If Nz(sFind, "") <> "" Then
    'имена таблиц
        sPathFileName = Split(sFind, "|")
    End If

                'Создаем общую таблицу приемник
                Set xlWbR = xlApp.Workbooks.Add
                xlWbR.SaveAs CurrentProject.Path & "\" & "XX-563 Отчет по старению запасов.xlsx"
                Set xlWsR = xlWbR.Worksheets(1)

    For i = IIf(LBound(sPathFileName) = UBound(sPathFileName), LBound(sPathFileName), LBound(sPathFileName) + 1) To UBound(sPathFileName)
        sFileName = sPathFileName(0) & IIf(LBound(sPathFileName) = UBound(sPathFileName), Null, "\" & sPathFileName(i))
        'Открываем первую таблицу источник
        Set xlWbT = xlApp.Workbooks.Open(sFileName)
        Set xlWsT = xlWbT.Worksheets(1)
        xlApp.Visible = True
                        
            iLastWbR = xlWsR.Cells(Rows.Count, 1).End(xlUp).Row + 1
            iLastWbT = xlWsT.Cells(Rows.Count, 1).End(xlUp).Row
            
                If (i = 0) Or (i = 1) Then
                    xlWsT.Range(Cells(3, 1), Cells(iLastWbT, "CM")).Copy Destination:=xlWsR.Cells(iLastWbR, 1)
                Else
                    xlWsT.Range(Cells(4, 1), Cells(iLastWbT, "CM")).Copy Destination:=xlWsR.Cells(iLastWbR, 1)
                End If
                                        
        xlWbT.Close
        Set xlWsT = Nothing
        Set xlWbT = Nothing
 
    Next i
    
    xlWbR.Save
    xlWbR.Close
    Set xlWsR = Nothing
    Set xlWbR = Nothing
    xlApp.Quit
    Set xlApp = Nothing
...
Рейтинг: 0 / 0
Не работает копирование
    #38141388
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этих строках перед Cells не указан родительский объект, хотя это вряд ли причина данной ошибки, но исправить все равно стоит
...
Рейтинг: 0 / 0
Не работает копирование
    #38141453
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProВ этих строках перед Cells не указан родительский объект, хотя это вряд ли причина данной ошибки, но исправить все равно стоит
А есть ли необходимость его указывать с учетом того что они определяются как:
Код: vbnet
1.
Set xlWsR = xlWbR.Worksheets(1)


и я пробывал указывать родительский объект, ошибка таже, как вы заметили проблема не в этом.
...
Рейтинг: 0 / 0
Не работает копирование
    #38141479
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander-80578А есть ли необходимость его указывать с учетом того что они определяются как:в строке:
Код: vbnet
1.
xlWsT.Range(Cells(4, 1), Cells(iLastWbT, "CM"))

объекты Cells принадлежат текущей книге по идее, надо
Код: vbnet
1.
xlWsT.Range(xlWsT.Cells(4, 1), xlWsT.Cells(iLastWbT, "CM"))

но тогда должна была бы вылетать другая ошибка, типа "невозможно получить объект Range".

У меня не получается воспроизвести проблему, вы можете дать тестовые файлы?
...
Рейтинг: 0 / 0
Не работает копирование
    #38141621
Может объединенные ячейки есть?
...
Рейтинг: 0 / 0
Не работает копирование
    #38141670
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне не приходила в голову мысль, что проблема может быть в копируемом файле, но видимо так и есть, так как когда я взял другие файлы для слияния, все прошло без проблем.
Дело в том, что файлы которые я сливаю в один общий, имеют довольно большой объем, порядка 36000 строк, это выгрузка из БД, так что объединенные ячейки наврядли есть, но есть что то другое, что мешае копированию, что это может быть и как с этим бороться, может можно как то сбросить все возможные форматирования?
...
Рейтинг: 0 / 0
Не работает копирование
    #38141907
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, у кого нибудь есть мысли по поводу причин возникновения ошибки, скрин которой показн в первом посте?
...
Рейтинг: 0 / 0
Не работает копирование
    #38141935
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тестовый файл в студию
...
Рейтинг: 0 / 0
Не работает копирование
    #38141965
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файл дать не могу, но он уже и не нужен, я понял в чем проблема - таблица приемник "XX-563 Отчет по старению запасов.xlsx"
, которую я программно создаю открывается в режиме совместимости, т.е. максимальное количество строк 65к, поэтому данные и не вмещаются, так как я пытаюсь слить в одну таблицу около 70к строк.

В связи с чем вопрос - как открыть файл xlsx НЕ в режиме совместимости. Оффис 2007.
Пробывал через New и CreateObject, результат один и тот же:
Код: vbnet
1.
2.
3.
                Set xlApp = CreateObject("excel.Application.14")   'New Excel.Application
                Set xlWbR = xlApp.Workbooks.Add
                xlWbR.SaveAs CurrentProject.Path & "\" & "XX-563 Отчет по старению запасов.xlsx"
...
Рейтинг: 0 / 0
Не работает копирование
    #38142145
Alexander-80578
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сформулирую вопрос иначе: Как програмно создать файл Excel, который будет поддерживать количество строк свыше 65536?
...
Рейтинг: 0 / 0
Не работает копирование
    #38142307
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо просто закрыть в текущем приложении все файлы 2003 офиса и младше. Самое оптимальное это открыть файл с макросом(он должен быть тоже формата 2007 офиса) и из него открывать файлы для сбора данных. Файлы так же должны быть в формате 2007 офиса.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает копирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]