2016-11-07 5 views
-1

私はVBAのマクロをしばらく使用していましたが、非表示にしたい情報がいくつかあります。 Excelは非常に危険な言語なので、コンパイルされたスクリプトの.exeファイルを作成して、人々が自分のコードにアクセスしないようにするという考えがあります。 私はVisual Studioでこれを行う方法を探していましたが、答えを得ることはできません。 誰かが私にこれを行う方法を教えてもらえますか? 事前に感謝します:)ビジュアルスタジオでvbaスクリプトを実行してコンパイルします

+0

これが問題を解決するかどうかわかりませんが、おそらくプラグインを使用できますか? [Create Excel 2007 vsto add in](http://www.clear-lines.com/blog/post/create-excel-2007-vsto-add-in-getting-started.aspx) – Stefan

+0

@Stefanありがとうございますあなたの答え。あなたのリンクからいくつかの研究を始めました。私はそれが役に立つと思っています。私はテストの下に置いていませんが、それが私が探していた出発点です。 = D –

+0

さて、聞いてうれしいです。あなたが探しているものを見つけたら、あなたの知識を共有してください。 ;) – Stefan

答えて

0

vbaを使用してEXE/DLLを作成することはできません。 EXE/DLLはコンパイルされたアセンブリなので、コンパイルできるプログラミング言語/環境が必要です。コンパイルとは機械語にあらかじめ翻訳されていることを意味します。 VBAは単なるインタプリタ言語であり、VBA環境で即座に翻訳されることを意味します。私はあなたがこれを行うにはC#、C++などを使用しなければならないと思います。さらにのinfromationについて参照してください。

Create a DLL using VBA editor

http://www.geeksengine.com/article/create-dll.html

https://msdn.microsoft.com/en-us/library/dt232c9t(VS.80).aspx

をあなたはDLLを作成せずに、あなたのVBAコードをロックして非表示にすることができます:

http://www.excel-easy.com/vba/examples/protect-macro.html

http://www.ozgrid.com/VBA/protect-vba-code.htm

Best way to protect Excel VBA code?

しかし、それはあなたの問題を解決するかどうか、私にはわからない:あなたは言う、エクセルVBAは、安全でない言語のようだという。私はあなたが何を意味するのか分かりません。スクリプトの内容を隠すだけの場合は、上記を参照してください。これまでは、これ以上のバージョンのExcelよりもコードを保護することができます。しかし、私はまだそれを解読する方法があると思っています。 g。 (あなたのコードを隠そうとしているのはなぜですか?) )多分あなたは何をしたい達成するための他の方法がある、私に知らせてください。

+0

本当にありがとう、本当にありがとうございます。私はあなたが私に送ったリンクをさらに見ていきますが、今はあまり時間がありません... 私が安全でないことを意味するのは、あなたが気がついたように、パスワードでvbaコードを保護するこれらの方法は非常に簡単に侵入する。 現在、データベースからデータをインポートしようとしています。そのため、データベースのIP:ポートとIDとPASSがスクリプトにありますが、これは完全に受け入れられません。それはビジネスでの内部使用のためですが、あなたが知っている...ごめんなさいよりも安全... –

+0

コンパイルされた言語と翻訳された言語の違いを理解しています...しかし、今までのすべての仕事はVBAで行われています..コードのプログラミング方法を変えるのは本当に退屈な作業だ。だから、データベースへの接続部分に.DLLを作成する可能性を考えているのだから、すべての機能がOKになり、UserIDとPASSWORDコンパイルされた部分で安全です。あなたが私を理解できるように私の問題を十分に説明してくれることを願っています。私が言ったように、私はあなたが私に送ったリンクを見て、私は良い結果を得ることができると思います。私はもしそうならあなたに知らせるでしょう! –

+0

はい、確かに、私はあなたが意味することを知っています。私は今までvbaで独自のdllを開発していませんでした。しかし、私がリンクを理解する限り、あなたの機能の一部を動かすことが可能でなければなりません。可能性としては、プロキシのようなdllを作成する可能性があります。私はあなたを助けることができる以下の投稿を見つけました[http://stackoverflow.com/questions/3217014/how-to-securely-store-connection-string-details-in-vba](http://stackoverflow.com/questions)/3217014/how-to-secure-store-connection-string-details-vba) – Stefan

0
using ADODB; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Threading.Tasks; 

namespace HiddenConnectionString 
{ 
[InterfaceType(ComInterfaceType.InterfaceIsDual), 
Guid("2FCEF713-CD2E-4ACB-A9CE-E57E7F51E72E")] 
public interface IMyServer 
{ 
    Connection GetConnection(); 
    void Shutdown(); 
} 

[ClassInterface(ClassInterfaceType.None)] 
[Guid("57BBEC44-C6E6-4E14-989A-B6DB7CF6FBEB")] 
public class MyServer : IMyServer 
{ 
    private Connection cn; 

    private string cnStr = "Provider=MSDAORA.1;Password=YourPass;User ID=YourID;Data Source=YourServer"; 
    public MyServer() 
    { 

    } 

    public Connection GetConnection() 
    { 
     cn = new Connection(); 
     cn.ConnectionString = cnStr; 
     cn.Open(); 
     return cn; 
    } 

    public void Shutdown() 
    { 
     cn.Close(); 
    } 
} 
} 

あなたはこのエラーを取得する可能性があります...それが原因InterfaceTypeはのGuid

であるよりも、アクセスがあります拒否されました(HRESULTからの例外:0x80070005(E_ACCESSDENIED)) ソリューションについては、このリンクをチェックしてください:

https://social.msdn.microsoft.com/Forums/en-US/26accc30-9cfb-4d86-9c27-780f51929ecb/access-is-denied-exception-from-hresult-0x80070005-eaccessdenied?forum=vsreportcontrols

これはコードですが、私はステファンが提案リンクを訪問します。

関連する問題