2017-01-11 21 views
0

Googleから検索しましたが、まだ明確な答えが見つかりません。私はExcel vbaにコードを書いています。コードへのプログラムユーザーのアクセスを制限する方法VBAプロジェクトのプロパティにパスワードを追加するのは簡単ですが、プログラムユーザーからVBAコードを隠す最も簡単で簡単な方法は何ですか?VBAコードへのアクセスを制限する

もう1つの投稿はVB6を示唆していますが、それは時代遅れであり、どこからダウンロードするのかわかりません。

ACCDEに保存しようとすると、アクセスエラーメッセージが表示されます。 The Access error message when trying to save in ACCDE. Part 2

+2

[私のExcel-VBAプロジェクトのパスワードに簡単にクラックされる可能性があります...他のオプションは何ですか?](http://stackoverflow.com/questions/1063155/so-my-excel-vba-project-パスワード紛失の可能性がある他のオプション)、その他数多くのものがあります。 – Comintern

+0

別の投稿に記載されているVB6は古くなっているようで、どこからダウンロードすればいいのかわかりません。 – Coldcode

+0

[これらの他の人](http://stackoverflow.com/search?q=%5Bexcel-vba%5D+project+password)のいくつかを確認してください。これらは、割れと割れ防止の間で約50-50回転します。そこに何も見つからない場合は、[次の結果を確認してください](https://www.google.com/?gws_rd=ssl#q=excel+vba+project+prevent+password+cracking)。 – Comintern

答えて

0

私はACCDEファイルにコンパイルし、MS AccessプロジェクトでVBAコードを記述することが可能であることを確認しました。したがって、OPに問題があった後で、この投稿を編集してより明示的にステップを進めてください。

Excelセッションと対話できることを証明したいので、ここで取り上げるExcelワークブックファイルを作成してください。私は私のワークブックN:\WorkbookControlledByAccess.xlsmと呼ばれるモジュールで、私はこのコードをApplication.Run使用に呼び出すことができますいくつかのコードを書いている些細な例示的な実施

Option Explicit 

Public Function SomeExportedFunction() As String 
    SomeExportedFunction = "Hello 47" 
End Function 

は、それから私は、MSのアクセスを開いて、ファイル - >新規作成 - >空白のデスクトップを行ってきました指定されたデフォルトのデータベースファイル名を受け入れたCreateを押すと、私は 'Database5'でDatabase5.accdbを作成します。そして、デフォルトのウィンドウは、新しいTable、Table1です。リボンで、[作成] - > [ブランクフォーム]を選択します。

フォームでコマンドボタンを作成すると、迷惑なウィザードがスローされ、ウィザードがキャンセルされます。新しく作成されたボタンを右クリックしてコンテキストメニューを表示し、[ビルドの選択]ダイアログボックスの[ビルダーの選択]ダイアログボックスで[コードビルダ]を選択すると、エラーが発生します。フォームまたはレポートのHasNModuleプロパティをYesにします。そのエラーに対して[OK]をクリックし、デザインリボンの[表示]ボタンを使用してデザインビューに切り替えます。デザインビューに入ったら、コンテキストメニューのステップをもう一度試してください。あなたは私たちが

Option Compare Database 
Option Explicit 

Private Sub Command0_Click() 
    MsgBox "Just access at the moment" 
End Sub 

一つにこれを変更することで、ボタンをテストします

Option Compare Database 
Option Explicit 

Private Sub Command0_Click() 

End Sub 

次のコードを持ってF5キーを押して、フォームを実行する今VBA IDEのウィンドウを取得する必要があり、フォームを実行すると、クリックしてくださいボタンと新しいメッセージボックスが表示されます。 [OK]を今、いくつかのExcelのアクセスinteropを行う。 [ツール] - > [参照の追加やMicrosoft Excel 15.0を追加し、フォームを実行し、メッセージは、我々は以前に作成したExcelブックから取得されたボタンをクリックすると、今

Option Compare Database 
Option Explicit 

Public Sub Command0_Click() 

    '* Use GetObject to verify the workbook is loaded and accessible via 
    '* RunningObjectTable 
    Dim wb As Excel.Workbook 
    Set wb = GetObject("n:\WorkbookControlledByAccess.xlsm") 

    '* If we got here without error then we should be able to call back into Excel session. 
    MsgBox wb.Parent.Run("WorkbookControlledByAccess.xlsm!SomeExportedFunction") 

    'MsgBox SomeExportedFunction 
End Sub 

ようにコードを変更します。これにより、AccessがExcelに到達できることが証明されます。

これは通常のaccdbファイルであり、コードをパスワードで保護する必要があります。

accdeファイルを作成する場合は、「ファイル」 - >「名前を付けて保存」 - >「ACCDEを作成」に進み、ファイルダイアログに従います。その後、accdeファイルを開くとコードがロックされます。

私はまだaccdeファイルへのハックを網羅的に検索していませんが、標準のExcel VBAは安全ではないことがわかります。

+0

動作中のExcel VBAコードをコピーしました。私はVisual Basicエディタにアクセスし、新しいモジュールを挿入して貼り付けました。 ACCDEに保存しようとしたときに、Accessが.accde、.mde、または.adeファイルを作成できなかったというエラーメッセージが表示されます。このエラーは通常、大きなデータベースをMDEファイルにコンパイルする際に発生します。データベースをコンパイルするために使用されたメソッドのために、各テーブルに対して十分な数のTableID参照が作成されます。 – Coldcode

+0

あなたは正確なエラーメッセージのテキストを貼り付けますか? –

+0

私はスクリーンショットのための私の元のポストにリンクされています。 – Coldcode

関連する問題