• 締切済み

VBAをDLL化する方法を教えてください。

Excelの中で、UserFormを使用し、グラフを操作するプログラムをVBAで作成しています。 そこで、VBAのソースを見られないようにするために、全てDLL化してだれにでも配信できるようにしたいと考えていますが、どのようにすれば、DLLにできるのかわかりません。 VBAのパスワードだけでは弱いので、DLL化する方法がありましたら、どなたかその方法をご教授願います。

みんなの回答

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.3

| Visual Basicからでは、Excelの中の細かな操作まではできないと聞いたことがあった 出来ないわけではありません。 面倒なだけです 笑 Excelを参照指定すれば、Excel操作が可能になります。 Accessのサポートページですが Visual Basicにも参照指定があるので同じです。 http://support.microsoft.com/kb/825796/ja

sambrou007
質問者

補足

phoenix343 さんありがとうございます。 Accessのサポートページを見ましたが、Accessをよく知らないので、 何らかの参照設定が必要なのだろうといことはわかりました。 他に、VBでExcelグラフを作成する説明がありましたので、多少参考になるのかもしれません。 http://support.microsoft.com/kb/142387/ja?spid=2971&sid=global 確かに、面倒な設定が必要そうですので、簡単に説明することは難しいのかもしれませんので、これを糸口に、VBで作成する方法を勉強してみます。

  • phoenix343
  • ベストアンサー率15% (296/1946)
回答No.2

| Excelの中で、UserFormを使用してグラフを操作するプログラムを | 開発用ツール(たとえばVisual Studio等)で作成すれば、できると | 考えていいのでしょうか? 根本的に違います。 出来ないとは言いませんが、 Excelで作成したコードをそのまま持ってくることは出来ませんよ? なんでDLLにこだわっているのか不明ですけど Excel VBAで作成しているのなら Visual Basicに移植の方が遥かに現実的です。

sambrou007
質問者

補足

phoenix343 さん回答ありがとうございます。 DLLそのものにはこだわってないのですが、こだわっていることは、 ソースが見えないようにすることです。 そこで、Visual Basicで作成しても、Visual Basicではグラフの操作まではできないと思っているのですが、そこが違っているのでしょうか? Visual Basicからでは、Excelの中の細かな操作まではできないと聞いたことがあったので、VBAをDLL化できないかと考えたのですが、基本的な理解ができていないのかもしれません。 目的は、VBAで作成したプログラムソースを見れなくする方法をご教授いただけないでしょうか? パスワードでは、脆弱なため、完全に見えなくする方法です。 再度、よろしくお願いします。

回答No.1

>DLL化する方法がありました ありません。 DLLにするなら開発用ツール(たとえばVisual Studio等)が必要です。

sambrou007
質問者

補足

bluecampus さん回答ありがとうございます。 DLL、VBのことをよく知らないので再度お教えいただきたいのですが、 Excelの中で、UserFormを使用してグラフを操作するプログラムを 開発用ツール(たとえばVisual Studio等)で作成すれば、できると 考えていいのでしょうか? Visual Studio等でExcelを操作できるようにする方法がわかりません。 Visual Studio等の入り口でも結構ですので、Excelを操作できるようになる方法をお教えいただけないでしょうか?

関連するQ&A

  • VBAで呼び出したVBのDLLのデバッグ方法

    VB2010で、COM相互運用機能を使って作成したDLLを VBAから呼び出すことはできるのですが この状態でこのDLLをデバッグすることはできないでしょうか。 本来ならば、DLLをデバッグするテストプログラムを VB2010のVB.NETのWindowsフォームアプリケーションか ConsoleApplication1で作成して、 同じソリューションの中に DLLとテストプログラムのプロジェクトを配置して 参照の追加でDLLを参照設定して 両者をデバッグをすると思われますが、 テストプログラムを作るのがかなり大変なのと、 今回作成したDLLは、元々はVBAの中のひとつのプロシージャ―で、 事情があって、このプロシージャ―だけをVBのDLLにしたものです。 このプロシージャ―は元々はVBAの中で正しく動作していたものです。 VBに書き直した時に何らかの不具合が起きていると思われます。 テストプログラムを作らずに、既存のVBAから呼び出して、 DLLの部分の動作だけを(できればVB2010で)デバッグできないでしょうか。 よろしくお願いします。 (WindowsXP SP3 , Excel2003のVBA , Visual Studio 2010)

  • VBAからDLLをCALLしたいのですが

    仕事上今まで蓄積されているFortranプログラムを効率よく使いたくDLL,VB,VBAにチャレンジしていますが, Intel(R) Fortran Compiler9.0で作成したDLLをEXCELのVBAからCALLしたところ 実行時エラー'49' DLLが正しく呼び出せません のエラーが表示されました。 このDLLはVisual Basic .NETで作成したVBからは正しくCALLできています。 色々原因を調べているのですがVBAからDLLの呼び出しとDLL内の計算は正しく行われておりDLLからVBAに戻るときにエラーになっているようです。 テストを行っているFortranとVBAのソースは以下です。VBAでDLLをCALL出来るように解決いたしたくご教授願お願いいたします。 (1)---- Fortran ソース --------------------------- subroutine DLL1(Q,QQ,QQQ) ! Expose subroutine DLL1 to users of this DLL ! !DEC$ ATTRIBUTES DLLEXPORT::DLL1 !DEC$ ATTRIBUTES ALIAS:'DLL1'::DLL1 ! Variables ! Body of DLL1 real*4 Q,QQ,QQQ QQ = Q*2 QQQ = Q**3 end subroutine DLL1 (2)----------- VBA ソース -------------------- Private Q As Single Private QQ As Single Private QQQ As Single Declare Sub DLL1 Lib "DLL1.dll" (ByRef Q As Single, ByRef QQ As Single, ByRef QQQ As Single) Sub Macro1() ChDrive ActiveWorkbook.Path ChDir ActiveWorkbook.Path Q = 2# Call DLL1(Q, QQ, QQQ) Cells(5, 2) = Format(Q, "#####.#0") Cells(6, 2) = Format(QQ, "#####.#0") Cells(7, 2) = Format(QQQ, "#####.#0") End Sub

  • DLLを作成してVBAから使用する方法は?

    Visual Basic 2005 Express EditionでDLLを作成して,エクセルVBAから使用する方法を教えてください。 DLLで提供する関数は,仮に Public Function TRIM2(ByVal str1 As String) As String TRIM2 = trim(str1) End Function とします。 DLLの作り方とエクセルVBAでの利用のやり方が判りません。 一応,DLLらしきものを作りエクセルVBAから参照を試みましたが,「指定されたファイルへの参照は登録できません。」というエラーになります。

  • EXCEL VBA でグラフの名前を変更する方法

    EXCELでグラフを作成した場合にそのグラフの名前が 自動的に"グラフ 1"等とつけられますが EXCEL VBA で既に存在するグラフを扱う際に 分かりやすいようにそのグラフの名前を変更したいのですが方法がわかりません。 プロパティなどを見ても変更できそな項目がありません。 これは変更できないのでしょうか? またプログラムを組んで変更する必要があるのでしょうか?どのようなプログラムになりますか?

  • VBAからDLL呼び出し

    vbaからC++で作成したDllファイル内関数を呼び出し、使用しているのですが、dllファイル内に記述してあるprintfが出力できません。 何か良い方法があるのでしょうか?

  • EXCEL VBAで自作DLLを呼び出すには?

    EXCEL VBAで自作DLLを呼び出すことをしています。一応うまくいったのですが、他人のPCで実行すると、「DLLがみつかりません」というエラーになってしまいます。DLLは、C:\Windows\system32 に入れてもだめです。また、c:\Program Files\xxx\yyy.dll にDLLをおき、EXCEL VBAで、Declare Function zzz Lib "c:\Program Files\xxx\yyy.dll" Alias _zzz@8" ( ...) As Long と 絶対パスでDLLを指定してもだめです。自分のPCは、Windows XP SP2です。他人のPCもXPですが、幾分新しいXPのようです。VISTAでもうまくいきません。 これはいったいなぜでしょうか?新しいOSではセキュリティを堅牢にしたたまに、DLLの呼び出しを制限しているのでしょうか? どうやったらDLLを呼び出せるか、教えていただけないでしょうか? よろしくお願いいたします。

  • C#で作成したDLLをExcelに内蔵してVBAで実行する方法

    Excel VBAで開発しているのですが制約が多く限界を感じています。C#でDLLを作成してExcelVBAから呼ぶことはできると思いますが、DLLを外付けにするのではなく内蔵することは可能ですか? Excel 2003 .Net Framework 3.5

  • VBAでお聞きしたいことがあります.

    VBAでお聞きしたいことがあります. 既にmysqlに登録しデータをVBAを用いて Excelに貼り付けをしたいのですが, プログラム文はどのようにすればいいのでしょうか? よかったら教えてください. VBAを用いて,mysqlに既に登録された4種類のデータを 自動的にグラフを作成するシステムを作っています.

  • VBAでDLL呼び出し

    VBAに関する使用方法をお教えください。 例えばsheet1のA1の数値をVBC++で作成したDLLファイル内にある関数に引数として渡したいのですが、どうすればよいでしょうか? (どう記述すればよいのでしょうか) 初心者につき、分かりやすく説明をして頂ければ幸いです。 VBC++で作成したDLLファイル名 testdll.dll testdll.dll内で定義してある関数名はtest_sendです 以上、宜しくお願い致します。

  • Excel VBAのシェアウエアは可能?

    Excel VBA でシェアウエアを作成しようと考えています。 ソースは見られたくないので、パスワードでロックしようと思うのですが、ちまたにはパスワード解析ソフトがあふれている・・・。 独自に暗号化しようにもソースを見られると意味がないので、できません・・・。 やはり、Excel VBA でのシェアウエアは無理があるのでしょうか?

専門家に質問してみよう