2016-04-14 16 views
1

私はVBAにあまり精通していないので、うまくいけば誰かが私を助けることができます。私は自分のニーズに合わせて編集できるVBAマクロを検索しましたが、どちらもうまくいきませんでした。ディレクトリ内のすべてのワークブックにExcelシートをコピー

ディレクトリ内のすべてのワークブックにワークシートをコピーしようとしています。たとえば、ワークブックの「テンプレート」のワークシートを、「毎日」のシート/カレント・シートと共に、フォルダ内のすべてのブックまたはコード内で選択したフォルダに入れたいとします。このようにして、手作業で何百もの時間を費やすことなく、シートをブックに簡単にコピーできます。

しかし私はどこから始めるべきかわかりません。見てきたものは私にとってはうまくいっていないようです。

+0

を。これをPythonで行うのはとても簡単です。あなたは、VBAでこれらのタイプのことをやめなければなりません。挑戦して、pythonスクリプトの助けが必要な場合は、私に教えてください。まもなく誰かがすぐに代替のVBAソリューションを提示するだろうと確信しています:) –

+1

この種のプロジェクトは、VBAでコーディングすることを学ぶことから始めるのに最適です。私は多くのExcel VBAチュートリアルをWeb上で(ちょうどGoogleの「Excel VBA」)始め、MicrosoftのVBAヘルプ(大部分は非常に良い)を使い、 。がんばろう! – aucuparia

+0

@Eric - Pythonをどのように(そしてなぜ)使うことができるのか少し説明できますか?私もPythonを学習しています(そしてVBA)、そして興味があります。 PythonコードはVBAに比べて簡単に行えますか?それとももっと早い? 「VBAファイルをディレクトリに開く」、「VBAコピーワークシートを外部ワークブックにする」、および「VBAは '.Select'を使用しないでください。 – BruceWayne

答えて

1

、あなたのテンプレートのブックを開きloopFolderへの正しいフォルダの場所を割り当て、その後、この試してください:あなたはこの提案を好まないかもしれませんが、私はPythonのようなサーバー側の言語を学ぶためにこの機会を使用することをお勧めします

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 
関連する問題