Одесса: 6°С (вода 9°С)
Киев: 1°С
Львов: -1°С

Тема: Макрос для Excell

Ответить в теме
Показано с 1 по 4 из 4
  1. Вверх #1
    Частый гость Аватар для anom
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    37
    Сообщений
    618
    Репутация
    80

    По умолчанию Макрос для Excell

    Всем привет!
    Господа программисты, необходим небольшой макрос с Excell, который позволит делать следующее: путем нажатия кнопки в Документ1.xls вставлять столбец значений из Документ2.xls.
    Т.е. необходимо переносить ячейки не открывая файл Документ2.xls. И делать это с помощью кнопки.
    Такое возможно?
    На самом деле задача гараздо сложнее, т.к. нужно столбцы ячеек копировать в Документ1.xls путем нажатия одной кнопки из 50 файлов, но мне сейчас разобраться хотя бы с маленьким примером.
    Необходим специалист со знанием Microsoft Visual Basic.

    Буду примного благодарен за помощь!


  2. Вверх #2
    Частый гость Аватар для wladwww
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    522
    Репутация
    36
    То есть будет форма в ВБ и ты там указываешь файл куда будет копироваться. И указываешь файлы откуда будет копироваться. Жмешь на кнопку и понеслось?

  3. Вверх #3
    Модератор
    Мистер Одесский Форум
    Аватар для maxx™
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    38
    Сообщений
    23,355
    Репутация
    6088
    Цитата Сообщение от anom Посмотреть сообщение
    Всем привет!
    Господа программисты, необходим небольшой макрос с Excell, который позволит делать следующее: путем нажатия кнопки в Документ1.xls вставлять столбец значений из Документ2.xls.
    Т.е. необходимо переносить ячейки не открывая файл Документ2.xls. И делать это с помощью кнопки.
    Такое возможно?
    На самом деле задача гараздо сложнее, т.к. нужно столбцы ячеек копировать в Документ1.xls путем нажатия одной кнопки из 50 файлов, но мне сейчас разобраться хотя бы с маленьким примером.
    Необходим специалист со знанием Microsoft Visual Basic.

    Буду примного благодарен за помощь!
    Возможно. Можно даже вообще эксель не открывать.
    Вот пример, который открывает документ и копирует 10 строк первой колонки 3 раза в новый документ. Скрипт на повершеле, синтаксис в VB будет примеро такой же.
    [threading.thread]::CurrentThread.CurrentCulture = 'en-US'
    $Excel = New-Object -Com Excel.Application
    $Excel.Visible = $True

    $WorkBooksrc = $Excel.WorkBooks.Open("d:\Book2.xlsx")
    $WorkSheetsrc = $WorkBooksrc.WorkSheets.Item(1)


    $WorkBookdst = $Excel.WorkBooks.Add()
    $WorkSheetdst = $WorkBookdst.WorkSheets.Item(1)

    for ($i=1; $i -lt 11; $i++){
    $WorkSheetdst.Cells.Item($i,1) = $WorkSheetsrc.Cells.Item($i,1)
    $WorkSheetdst.Cells.Item($i,2) = $WorkSheetsrc.Cells.Item($i,1)
    $WorkSheetdst.Cells.Item($i,3) = $WorkSheetsrc.Cells.Item($i,1)
    }

  4. Вверх #4
    Новичок
    Пол
    Мужской
    Возраст
    43
    Сообщений
    3
    Репутация
    10
    допустим, список полных путей файлов есть в диапазоне ячеек на первом листе Книги1 и надо скопировать один и тот же диапазон из каждой книги из списка в соседние столбцы второго листа Книги1.


    Код:
    sub MySuperCopy
    
    const filelist = "A1:A50" 'здесь список файлов
    const mydata = "A1:C5" 'здесь - диапазон, из которого копировать
    
    dim src_book as workbook, src_range as range, dst_range as range
    dim mycell as range
    
    on error resume next
    'перебираем ячейки с путями к файлам
    for each mycell in thisworkbook.worksheets(1).range(filelist).cells 
      set src_book = workbooks.open(mycell.value)
      if err.number > 0 then
        goto nextfile
      end if
      set src_range = src_book.worksheets(1).Range(mydata)
      with thisworkbook.worksheets(2)
        set dst_range = .Range(.Cells(1, .UsedRange.Columns.Count + 1), _
                                        .Cells(.Usedrange.Rows.Count, .UsedRange.Columns.Count + src_range.Columns.Count)
      end with
      dst_range.Value = src_Range.Value
    nextfile:
      set src_range = nothing
      src_book.Close SaveChanges:=false
      set dst_range = nothing
      set src_book = nothing
    next
    end sub
    P.S. Код не тестировал, т.к. оффиса сейчас под рукой нет.
    Последний раз редактировалось umbra; 21.07.2010 в 13:53.

Ответить в теме

Похожие темы

  1. Небольшая задачка в Excell
    от anom в разделе Программирование
    Ответов: 4
    Последнее сообщение: 11.04.2011, 13:58
  2. Ответов: 2
    Последнее сообщение: 24.01.2011, 11:35

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения