2017-11-13 4 views
0

VBAにはまったく新しいものです。私はさまざまなことをするコードを書いており、どこにいるのかにはかなり満足しています。他の多くのファイルにコード、ユーザーフォーム、ボタンを適用するにはどうすればいいですか?

これは、サブ機能を呼び出すExcelシートのボタンによってトリガーされます。

私が抱えている問題は、私がコードを書いたExcelシートは、私たちが頻繁に職場で使用し、コピーを保存するシートだということです。これは見積もり形式であり、1つのフォルダに5,000以上の異なる見積書のコピーがあります。

私はコピーのうちの1つにしかコードを書いていないので、ボタンとコード/ユーザーフォームを「ソース」ブックから指定した他のすべてのものにコピーするプログラムや何かを作成する方法がありますフォルダ?

ボタンが同じ場所にあるので、一貫性があります。

+2

ようこそStackOverflow。これは無料のコード作成サービスではありませんのでご注意ください。しかし、私たちは、仲間のプログラマー(そして志望者)が自分のコードを書くのを助けることを熱望しています。 [良い質問をするにはどうすればよいですか](http://stackoverflow.com/help/how-to-ask)のヘルプトピックをお読みください。また、ツアー中に(https://stackoverflow.com/tour)、バッジを獲得することもできます。その後、達成したいタスクを完了するために、これまでに書いたVBAコードで質問を更新してください。私たちはあなたを待っています。あなたのコード*を完成させるのに役立ちます。 – Ralph

+0

1つのブックでコードをホストし、Application.OnDoubleClickを使用してダブルクリックしたシート上でコードを使用する方が簡単な場合があります(コードを何百回も複製するのではなく) – jamheadart

答えて

0

また、このコードは、フォルダ

Sub Demo() 

    Dim s As String 
    Dim wb As Workbook 
    s = Dir("\\yourfolderpath\yourdoldername\*.xlsm") 
    Do While s <> "" 
     Set wb = Workbooks.Open("\\yourfolderpath\yourdoldername\" & s) 

     Dim VBComps As VBIDE.VBComponents 
     Dim VBComp As VBIDE.VBComponent 

     Set VBComps = wb.VBProject.VBComponents 
     For Each VBComp In VBComps 
      If VBComp.Name = "Your module name" Then 
       VBComps.Remove VBComp 
       Exit For 
      End If 
     Next VBComp 

     VBComps.Import "C:\your dir\your module name.bas" 
     wb.Close True 
     s = Dir() 
    Loop 


End Sub 

内のすべてのスプレッドシートに.BASファイルとして保存されたコードモジュールをインポートします。しかし - あなたはセキュリティにチェックを入れ、「VBAプロジェクトモデルへのアクセスを信頼する」持っている必要がありますVisual Basic for Applications ExtensibilityのリファレンスをVisual Basicのエディタで参照しています。

+0

これは私がすべてのファイルとこれらが設定されていることを確認しますか? これはかなり時間を要し、私が避けようとしているものです。 – BrownShugguh

+0

いいえ - それはExcelの一般的な設定です。ルーチンを実行する前に設定されている限り、あなたは大丈夫です。ボタンを描画してルーチンにアタッチするコードを追加する必要がありますが、それはgoogleableです –

関連する問題