Как создать несколько рабочих книг Excel из рабочего листа с помощью VBA - PullRequest
0 голосов
/ 11 марта 2019

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

Например, в моей таблице есть столбец с именем «servername» и n строк, которые содержат имя «Server1», и m строк, которые содержат имя «Server2»

Теперь я хочу, чтобы макрос создал два файла, Server1.xlsx и Server2.xlsx, и оба файла содержат каждую строку, содержащую имя сервера.

Возможно ли это? Если да, не могли бы вы мне помочь? Я никогда раньше не использовал VBA и не знаю, с чего начать.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Это вполне возможно. Однако, если вы раньше не писали VBA, вам сначала нужно начать с него.

Я рекомендую книги Excel VBA Билла Йелена . Они очень информативны, и он является высшим авторитетом во всех вещах Excel / VBA. Если вы не хотите платить, всегда есть сайт Chip Pearson .

После того, как вы освоите VBA для начинающих, я рекомендую хранить все ваши метаданные в Excel Table, проходить по всем строкам в этой таблице и создавать рабочие книги, используя метаданные в каждой строке.

0 голосов
/ 11 марта 2019

Вы начинаете с создания двух рабочих книг.Теперь у вас есть три книги.Оригинал (который содержит программный код) называется ThisWorkbook, два других - объектными переменными.Затем вы начинаете цикл по каждой строке на вашей существующей странице и используете оператор IF, чтобы перевести каждую строку в один или другой пункт назначения.Вы останавливаетесь, когда достигаете пустой строки.Вот пример (обратите внимание, вам придется расширить это самостоятельно)

 Sub Example()
 Dim wb as workbook 'declare an objvet variable
 Set wb = workbooks.add()  'point it to a new instance of the workbook class
 wb.saveas "File1.xlsx" 'save it as file1
 dim source as Range  'pointer to original file
 dim target1 as range  'pointer to destination
 set Source = thisworkbook.worksheets(1),range("a1")  'point to a1 in source file
 set target = wn.worksheets(1).range("a1")
 Do  'start a loop
 if source.text = "fred" then  'id cell holds this text then....
     source.entirerow.copy target  'copy source to target
     set target = target.offset(1,0)  'move target pointer down one row, no columns
 end if
set source = source.offset(1,0) 'move source pointer
loop until source = "" 'stop at first blank cell
wb.save
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...