Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает копирование / 11 сообщений из 11, страница 1 из 1
07.02.2013, 11:22
    #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
07.02.2013, 11:53
    #38141388
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
В этих строках перед Cells не указан родительский объект, хотя это вряд ли причина данной ошибки, но исправить все равно стоит
...
Рейтинг: 0 / 0
07.02.2013, 12:19
    #38141453
Alexander-80578
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
Shocker.ProВ этих строках перед Cells не указан родительский объект, хотя это вряд ли причина данной ошибки, но исправить все равно стоит
А есть ли необходимость его указывать с учетом того что они определяются как:
Код: vbnet
1.
Set xlWsR = xlWbR.Worksheets(1)


и я пробывал указывать родительский объект, ошибка таже, как вы заметили проблема не в этом.
...
Рейтинг: 0 / 0
07.02.2013, 12:30
    #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
07.02.2013, 13:28
    #38141621
Не работает копирование
Может объединенные ячейки есть?
...
Рейтинг: 0 / 0
07.02.2013, 13:45
    #38141670
Alexander-80578
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
Мне не приходила в голову мысль, что проблема может быть в копируемом файле, но видимо так и есть, так как когда я взял другие файлы для слияния, все прошло без проблем.
Дело в том, что файлы которые я сливаю в один общий, имеют довольно большой объем, порядка 36000 строк, это выгрузка из БД, так что объединенные ячейки наврядли есть, но есть что то другое, что мешае копированию, что это может быть и как с этим бороться, может можно как то сбросить все возможные форматирования?
...
Рейтинг: 0 / 0
07.02.2013, 15:25
    #38141907
Alexander-80578
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
Народ, у кого нибудь есть мысли по поводу причин возникновения ошибки, скрин которой показн в первом посте?
...
Рейтинг: 0 / 0
07.02.2013, 15:36
    #38141935
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
тестовый файл в студию
...
Рейтинг: 0 / 0
07.02.2013, 15:50
    #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
07.02.2013, 17:03
    #38142145
Alexander-80578
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
Сформулирую вопрос иначе: Как програмно создать файл Excel, который будет поддерживать количество строк свыше 65536?
...
Рейтинг: 0 / 0
07.02.2013, 18:15
    #38142307
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает копирование
Надо просто закрыть в текущем приложении все файлы 2003 офиса и младше. Самое оптимальное это открыть файл с макросом(он должен быть тоже формата 2007 офиса) и из него открывать файлы для сбора данных. Файлы так же должны быть в формате 2007 офиса.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Не работает копирование / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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