Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование в книгу ексель листов из другой книги, Выбор файла-Копирование и преборазование 
:(
    Опции темы
Sorro
Дата 5.5.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Добрый день. Предо мной стоит следующая задача:

В Открытую книгу(Назовём knig1), в заранее созданный  лист с именем Лист3. Вставить значения из другой книги(Knig2) из Листа1. Причём выбор книги должен осуществляться в ручную (наверн через GetOpenFilename). В knig2 заранее не известно число строк. Так же требуютя преобразования значений из knig2 по типу ЗНАЧЕН(ПЕЧСИМВ()) + изменять формат на Числой и Дата\время в зависимости от адреса ячеек (Допустим стоьлбцы A должны иметь тип Дата, а Столбцы B - числовой.)

Перечитал много постов в различных форумах, но так как знаний по VBA пока мало, подогнать предложенные решения под себя затруднительно... Так что прошу вашей помощи.... smile 
PM MAIL   Вверх
Sorro
Дата 6.5.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.5.2009

Репутация: нет
Всего: нет



Ладно, это слишком сложно =) 
Со вставкой значений из другой книги я сам разобрался. Вот так:
Код

Sub Copy()

Dim BazaWb As Workbook
Dim BazaSht As Worksheet
    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .Calculation = xlManual
        Set BazaWb = ThisWorkbook
        Set BazaSht = BazaWb.Sheets("Лист2")
        arrFiles = Application.GetOpenFilename("Excel Files (*.xlsx),*.xlsx")
                With .Workbooks.Open _
                     (Filename:=arrFiles, UpdateLinks:=False, ReadOnly:=True)
                    sc = WorksheetFunction.CountA(Range("A1").EntireColumn) 
'считается кол-во строк в файле (по кол-ву заполненых ячеек в столбе А)
                    BazaSht.Range("A1:M" & sc).Value = .Worksheets("Лист1").Range("A1:M" & sc).Value
                    .Close
                     End With
                End With


End Sub


Но вот возник другой вопрос - часть значений сохраняется как текст, как мне их сохранить как числа. В формулах это делается через ЗНАЧ()....
Если можно сразу пример для преобразования диапазона.
PM MAIL   Вверх
msotools
Дата 17.5.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.5.2009

Репутация: нет
Всего: нет



               With .Workbooks.Open _
                     (Filename:=arrFiles, UpdateLinks:=False, ReadOnly:=True)
  'найти ПОСЛЕДНЮЮ заполненную ячейку в A
                   sc = .Range("A:A").Find("").Row - 1  
                    for n=1 to sc
                      BazaSht.cells(n,1) = Val(.Worksheets("Лист1").cells(n,1) .Text)
                    next
                       .Close
                     End With
                End With


Excel автоматически распознает тип значения, поблемы могут быть только, если числа представлены с точкой в виде десячного разделителя, в этом случае нужно изменить строку:

BazaSht.cells(n,1) = Val(replace(.Worksheets("Лист1").cells(n,1) .Text,".",","))

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0408 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.