2016-07-28 7 views
0

ExcelのExcelスプレッドシートに一連のxmlドキュメントを読み込む人のためのExcelアドインを作成するように求められました。アドインを作成し、自分のローカルコピーをダウンロードするための場所を公開します。私は経験や機能をカスタマイズするために、各エンドユーザーが設定可能なVBAの定数を持つのが理想的です。Excelアドイン変数を設定して保存する

アドインを実行するボタンが1つあり、VBAの一部の変数の値を編集して新しい値を保存する「設定」などのボタンがあるといいと思っていましたユーザーが次にExcelを開くと、アドインはそれらのために構成されたままになります。このようなことは可能ですか?あなたはそこに着くためにどのような道筋をとるべきかについていくつか提案していますか?

変数を保持する方法はありますか?私は、アドインのローカルバージョンのどこかに値を保存する必要があると思いますが、もしそうなら、一連のパラメータを保存する最良の方法は何ですか?

一般的なアドバイスは大歓迎です。私は実際にまだアドインを書いていないが、設計段階にある。

+1

アドインはExcelワークブックとして作成されるため、参照できる独自のワークシートが作成されます。アドインコードでそれらを参照するときは、アドインのシートに 'ThisWorkbook'を使用し、エンドユーザのExcelシートには' ActiveWorkbook'を使用するようにしてください。次に、変数値をセルに格納し、アドインワークシートのセル値を変更して永続化させることができます。 – tigeravatar

+0

それは完璧な解決策のように聞こえる - 私は彼らがこのようにアクセス可能なシートを持っていたことに気付かなかった。私が読んだすべてのものは、「ActiveWorkbookを使用するようにしてください」と言っていました。私があなたの提案するとおりにします。これを回答として再投稿すると、そのようにマークされます。 –

+1

レジストリ(Windowsの場合)または別のテキストファイル( "ini"スタイルまたは多分XML)を使用できます。アドインのワークシートを使用してデータを保存する場合は、更新の管理方法を検討する必要があります。ユーザーが設定を再構成する必要がなくても新しいバージョンを公開するだけです。 –

答えて

2

セルを使用して設定を保存することはお勧めしません。ユーザーが設定を保存することができます。

ただし、VBAはレジストリの編集をサポートしています。

SaveSetting "Macro name", "Settings", "Username", "John Doe" 

上記のコードはMacro name呼ばappnameのとセクションSettingsに名前John DoeUsernameという設定やレジストリキーを保存します。

新しい設定を保存すると、要するに最後の2つの文字列を変更するだけです。最初の2つはいつも同じでなければなりません。あなたが使用して設定を取得するには

\アプリ名\ HCU \ Software \ VBとVBAプログラム設定:

キーがに保存されます

GetSetting("Macro name", "Settings", "Username") 

別の解決策は、txt-使用することですファイル。
これはまだ細胞よりも優れていますが、上記レジストリと同じくらい良いものではありません。

settings = "Username=John Doe, Worktitle=Janitor" 
MyFile = "C:\myapp\settings.txt" 
fnum = FreeFile() 
Open MyFile For Output As #fnum 
Print #fnum, settings 
Close #fnum 

これで、読み取りと解析が可能な設定のtxtファイルが作成されました。

+0

私の周りの人はレジストリに書き込むことに非常に注意しますので、私はパラメータを保存するためのテキストファイルを使用するように提案します。これは完璧な解決策の良い妥協案と思われ、単純で低リスクの戦略を維持することによって人々を幸せに保ちます。誰かがテキストファイルからの読み方に興味があるなら、http://www.excel-easy.com/vba/examples/read-data-from-text-file.html –

+0

人々があなたがレジストリに物を書き込むことを恐れたら、自分たちのビジネスに気をつけてください。彼らは明らかに何かを考えている人ですが、そうではありません。 ** vbaレジストリ機能は、レジストリ内の特定のフォルダにのみ書き込むことができます**。無制限にアクセスすることはできません。私はあなたのコンピュータにインストールしたすべてのソフトウェアの約90〜95%がレジストリに書き込むと信じています。あなたが非常に信頼できない人でない限り、私はあなたの友人がなぜ怖がっているのか分かりません。それを行うtxtの方法は、私がOKと書いたとおりですが、あなたはまだ誰かが "何かをテストしたい"というリスクがあります。 – Andreas

+0

レジストリで、正しいパスにナビゲートする方法を知っている人がほんのわずかです。そこのデータを操作します。したがって、あなたがそこに置くものはそのままです。 – Andreas

関連する問題