Сводка Excel многих данных файлов Excel в одном отчете Excel - PullRequest
1 голос
/ 08 октября 2010

У меня есть несколько файлов Excel, содержащих заполненный сюрвери, теперь я хотел бы иметь один главный документ, который будет иметь итоговый результат каждого.

Таким образом, я представляю для каждого файла строку ввода: имя- address - некоторые данные ...

Я хотел бы открыть каждый из файлов и скопировать данные из выбранных ячеек в мой основной файл.

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

Как я могу скопировать / вставить данные из А1 в свой лист?

Sub Combine()
  Fpath = "c:\test\" 
  Fname = Dir(Fpath & "*.xls")
  Dim xl As Excel.Application
  Set xl = CreateObject("Excel.Application")
  xl.Visible = false
  Dim w As Workbook
  Dim remoteBook As Workbook
  Set remoteBook = xl.Workbooks.Open(Fpath & Fname)
  xl.Quit
 End Sub

Я новичок в VBA, способ доступа кажется довольно сложным, есть ли более простой способполучить значения из этих файлов Excel?Я действительно хочу иметь простое решение.

Что больше всего раздражает, если макросы VBA в файлах опроса позволяют отключить их при открытии, чтобы пользователь не получал приглашения?

Ответы [ 2 ]

2 голосов
/ 08 октября 2010

Это как минимум 4 вопроса в одном, давайте посмотрим, что мы можем с этим поделать: -)

Во-первых, нет необходимости создавать еще один экземпляр Excel, просто добавьте свой код в пустую книгу (или в свой основной документ, если это хорошо для вас)

 Public Function OpenWorkbook(mypath As String) As Workbook
     Workbooks.Open Filename:=mypath
     Set OpenWorkbook = ActiveWorkbook
 End Function

Использование:

 Dim wb as workbook, ws as worksheet
 set wb = OpenWorkbook("your path")
 set ws = wb.Sheets(1)

Избегание второго экземпляра Excel автоматически решает вашу проблему с любыми макросами VBA в ваших документах опроса - когда вы открываете другую рабочую книгу из рабочего макроса, как описано выше, пользователь не получит никакого предупреждения безопасности. (Кстати, документы опроса должны содержать какие-либо макросы?)

Копирование данных с этого листа в рабочую книгу выглядит следующим образом:

 ThisWorkbook.Sheets("Name of your sheet").Range("A1") = ws.Range("A1")

Итерация по группе файлов Excel в папке описана, например, здесь

Надеюсь, это поможет.

0 голосов
/ 08 октября 2010

Вы на правильном пути. Это не сложно, и я не думаю, что есть более простой способ получить данные из другой рабочей книги. Напишите функцию, и вы сможете легко повторно использовать код.

Если макросы нужны только для компиляции данных опроса, вы можете удалить макросы из заполненного файла xls. В противном случае вам потребуется изменить разрешения безопасности на каждом компьютере или подписать проект цифровой подписью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...