2016-04-14 4 views
1

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

Я пытаюсь скопировать мой рабочий лист во все мои книги в каталоге. Например, я хочу, чтобы рабочий лист из книги «Шаблон» с листом/текущим листом «Ежедневно» во всех моих книгах в папке или в какой-либо папке, которую я выбираю в коде. Таким образом, я могу легко скопировать лист в книгу без необходимости делать это сотни раз вручную.

Однако я не имею ни малейшего понятия, с чего начать, и тот, который я изучил, не очень хорошо работает для меня.

+0

Вы не можете, как это предложение, но я бы рекомендовал использовать эту возможность, чтобы выучить язык на стороне сервера, как питон , Выполнение этого в python было бы очень просто. Вам следует избегать делать подобные вещи с помощью VBA. Дайте мне знать, если вы встаете на вызов и хотите помочь с скриптом python. Если нет, я уверен, что кто-то представит альтернативное решение VBA в ближайшее время :) –

+1

Этот вид проекта отличный, чтобы начать с изучения кода в VBA. Я бы посоветовал начать с одного из многих учебных пособий Excel VBA в Интернете (просто Google «Excel VBA») и использовать Microsoft VBA-справку (что очень хорошо по большей части), и этот сайт определен, если/когда вы застряли , Удачи! – aucuparia

+0

@ Эрик. Вы можете объяснить немного больше, как вы могли бы использовать Python для этого (и почему)? Я тоже изучаю Python (и VBA), и мне любопытно. Будет ли код Python просто прост в использовании, по сравнению с VBA? Или быстрее ,? и OP, с ключевыми словами «VBA open files in directory», «VBA copy workheet to external workbook» и «VBA, чтобы избежать использования' .Select' », вы должны идти довольно быстро. – BruceWayne

ответ

1

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

Sub copyWorksheet() 

    'this sets your template workbook/worksheet 
    Dim copyWB As Workbook 
    Dim copyWS As Worksheet 

    Set copyWB = Workbooks("Template") 
    Set copyWS = copyWB.Sheets("Daily") 

    'this creates a collection of all filenames to be processed 
    Dim loopFolder As String 
    Dim fileNm As Variant 
    Dim myFiles As New Collection 

    '''don't forget the backslash before the final double-quote below 
    loopFolder = "C:\Documents\desiredFolder\" 
    fileNm = Dir(loopFolder & "*.xlsx") 

    Do While fileNm <> "" 
     myFiles.Add fileNm 
     fileNm = Dir 
    Loop 

    'this loops through all filenames and copies your copyWS to the beginning 
    Dim wb As Workbook 

    For Each fileNm In myFiles 
     Set wb = Workbooks.Open(fileName:=(loopFolder & fileNm)) 
     copyWS.Copy after:=wb.Sheets(1) 
     wb.Save 
     wb.Close 
    Next 

End Sub 
Смежные вопросы