プロが教えるわが家の防犯対策術!

アドインファイルを作成して他の人に配布する場合、いくら、C:\Documents and Settings\ユーザー名\ApplicationData\Microsoft\Addinsにファイルを置いて・・・って説明しても、エクスプローラーのツール-フォルダーオプション-表示で、ファイルとフォルダーの表示で・・・・と説明しても使ってもらえない現実があります。そこで、現在のログイン名のユーザー名をExcelから取得する方法ってありますか?また、そのパソコンならば、そのユーザーでも同じアドインファイルが使用できる方法ってありますか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。



Excelを開いたままで、Excelのマクロから設定する方法もありますが、ロスが出ます。通常は、Developer バージョン等にあるインストーラーを使えば早いのですが、一般の方は持っておりませんので、

同様のものは数多くありますが、たとえば、以下のフリーソフトウェア(個人に限ります)を使えばよいと思います。最初に、cab で圧縮します。

EXEpress
http://www.webtech.co.jp/onlinesoft/exepress/ind …

この詳細設定の[解凍]タブの解凍設定で、デフォルト解凍先フォルダを指定する
の基準フォルダを
[Application Dataフォルダ] を指定し、
フォルダを、Microsoft\Addins\
指定すればよいです。

おそらく、相手に渡した時点で、アンチウィルスの洗礼は受けるはずですが、メールなどで説明をしておけばよいです。アドインは、デジタル署名とまではいいませんが、プロパティに署名ぐらいは入れてくださいね。デジタル署名は、ロックは必要になりますが、内容は、絶対の自信がないと、開けてもらうことになって、デジタル署名は消えてしまいます。VBAのマクロ証明は、先日の質問で価格を調べてみましたが、安くても、4万円/年の登録料が必要ですから、個人負担が大きいです。

なお、アドインのユーザ任意の場所は、トラブルの元になりますから、やめたほうがよいです。
VBAでは、 Application.UserLibraryPath で出せます。
つまり、WSH で、Excelのオートメーションオブジェクトから、この場所を取れますから、そこにファイルコピーする方法も可能です。
    • good
    • 0

コピー作業はバッチファイルにすればどうでしょうか。



例えばaddin.xlaというアドインファイルがあるとします。
そしてバッチファイルに、
@copy /Y addin.xla %APPDATA%\Microsoft\Addins
@echo インストールが完了しましたorファイルのコピーが完了しました。
@echo Enterキーを押すと終了します。
(※実際どんなキーを押しても終了できるが、ここはユーザーがわかり易いようにEnterキーにする。)
@pause
と記述します。
'@'はコマンドを非表示に。
そしてcopyコマンドに/Yを加える事によって上書きメッセージを非表示にします。そうすることによって、今後新しいバージョンを作成した際も上書き表示が無いので簡単。ただし名前が重複しないように、ファイル名を考慮する必要があります。
こうすれば、相手のPC環境を考慮しなくても相手のユーザーのアドインフォルダにコピーされます(ただし単一ユーザーにしかインストールされません。)
あとはアドインファイルとバッチファイルと説明ファイルをまとめてzip形式などに圧縮しておきます。

他の人には「ファイルを解凍したらまずこれを実行して下さい。そしてインストールが完了したらこのフォルダは丸ごと削除して構いません。」などと説明します。

こんな方法はダメでしょうか。
    • good
    • 0

はじめまして



1番さんの回答にもありますが、アドイン自体は任意のフォルダに置くことができます。
アドインファイルを自己解凍書庫にして、フォルダも指定すればダブルクリック一発で任意のフォルダを作成してそこにアドインを置くことも簡単になります。
たとえば「LHMELT」というフリーソフトでは下記の要領で実現できます。
http://www2.nsknet.or.jp/~micco/exp/sfxsample.htm

実際のアドインの登録は…
1、任意のフォルダにアドインを置く(1番さんに従い、ここでは仮にC:\ExcelAddinとしましょう)
2、Excelを立ち上げ、「ツール」→「アドイン」で「アドインダイアログ」を開く
3、「参照」をクリックし「ファイルの参照」ダイアログを開く
4、左側の「マイコンピューター」をクリック
5、「C:」をクリック
6、「ExcelAddin」フォルダをクリック
7、質問者様のアドインファイルをクリックし「OK」をクリック

的外れでしたらごめんなさい。
    • good
    • 0

C:\ExcelAddin とかでもいいのではないでしょうか?


だめなのかな?

この回答への補足

早速のご回答有難う御座います。
C:\ExcelAddin に書き込めば、全てのユーザーに共通のアドインとなるのでしょうか?もう少し具体的に教えて頂けないでしょうか?宜しくお願い致します。

補足日時:2007/12/28 23:17
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelから自作アドインを完全に削除したい

 初めてアドイン(xlaファイル)を作ったのですが、いったん組み込んでしまうと、アドインから削除できなくて困っています。
 「ツール」→「アドイン」で、チェックボックスを外すと機能は使えなくなるのですが、アドインの一覧から消すことができないのです。
 消し方をご教授ください。よろしくお願いします。

Aベストアンサー

あまり自信がないのですが、

アドインのxlaファイルそのものを削除
 ↓
再度「ツール」→「アドイン」でそのアドインを選択する
 ↓
アドインファイルがない場合は、「削除しますか?」のメッセージが出る・・・

となるのではないかと思います。
一度、xlaファイルを削除(またはフォルダを移動する)してみると、一覧から消せるかもしれません。

間違っていたらすみません。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Qエクセルのアドインタブはどのように表示?

エクセルのアドインタブはどのように表示させるのでしょうか?

Aベストアンサー

excelのアドインタブ表示方法
excel画面の「クイックアクセスツールバー」の一番右の▼をクリックし、「その他のコマンド」をクリック→画面左側の「リボンのユーザー設定」をクリック→画面右側の「メインタブ」内の「開発」にチェックを入れて「OK」を押すと、新たに「開発」タブが一番右側に出来ます。
新たにできた「開発」タブ内の「アドイン」グループ内の「アドイン」をクリックして使用されるアドインにチェックを入れます(分析ツールだったら、「分析ツール」にチェックを入れる)
あとは「データ」タブの一番右側「分析」グループ内の「データ分析」から使用したい分析ツールを選んでください。

※手順はexcel2010・2013共に同じです。

Qエクセルで個人用マクロの配布方法

このたびわたしが作成した業務用の簡単なマクロを社内の他部門(遠隔地)の10名ほどのかたがたにメールで配布して使っていただくことになりました。

自分では個人用マクロブックに登録し、任意のエクセルのシートに対して使用していたものです。
一応そのマクロだけをエクスポートしてModule1.basというファイルは作ったのですが、これまでマクロそのものを配布したことがないので送った先の人にどうインポート方法を説明したらよいのかわかりません。多分マクロはよく知らないひとたちのはずです。
いい説明方法があれば教えてください。

Aベストアンサー

> 成功しました!!他の端末へのインストールも出来ました。

おお!それは、よかった!(^^)

> 再度送付してあげれば相手のアドインは上書きされると思ってよい
> のでしょうか?

ええ、最初から修正やバージョンアップはあるものとして、考慮して
ましたから、その手順で大丈夫ですよ。

それでは、さらに一歩進んで、、

アドイン化したものは、どんな時に実行されるか保証されないので、
注意が必要です。つまり、ActiveSheet がない状態でメニューを
クリックすることも、あり得るってことです。この場合、エラーの
発生が予想されますね。

エラーが発生して、「デバッグしますか?」と聞かれたり、デバッグ
モードの VBE 画面がでてきたら、初心者の方はビックリしてしまう
でしょう。

ですから、コードの冒頭でそれをトラップしてやらなければなりま
せんし、VBA プロジェクトも保護しておいた方が良いでしょう。

VBA プロジェクトの保護は、VBE のプロジェクトエクスプローラーで
MyADDIN を選択し、右クリック[VBA プロジェクトのプロパティー]
から行います。

トラップの方法は、例えば Selection ならセル以外が選択されて
いてはマズイ場合、

IF Ucase$(Typename(Selection))<>"RANGE" Then Exit Sub

のようにコードの冒頭に書き込みます。On Error ~ ステートメント
も必要があれば使います。

関数もワークシート関数として使われたくない場合は Private Function
にしてしまうか、次のように Caller を使ってトラップします。

Function Test(A As Variant) As String

  ' ワークシート関数として使えないようにする
  If UCase$(TypeName(Application.Caller)) = "RANGE" Then
    Exit Function
  End If

  '~ 処理 ~

End Function

こうすると、VBA からしか使えない関数になります。

この辺は、場数を積めば勘処が養えるので、無理に今全部やる必要は
ありません。エラーが発生したときに困ったら、読み返してみて下さい。

以下は、余談です。

・プロシージャ Count_Net の

x = ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Count).Row



x = rngTarget(rngTarget.Count).Row

の方が良いと思います。

・プロシージャ Del_Sqt について

これは、前回のご質問のやつですよね。そちらに手が回らず、済みません。


アドイン化、、大変だったと思いますが、いろいろやってみて下さい。
自分にとって都合がよく便利で、自分だけのツールが作れますよ。

では、頑張って下さい。

あ、慣れてきたら、アドインの名前はもっとセンスのいいヤツに変えて
下さいね。MyADDIN って適当につけたヤツなので(^^;)

> 成功しました!!他の端末へのインストールも出来ました。

おお!それは、よかった!(^^)

> 再度送付してあげれば相手のアドインは上書きされると思ってよい
> のでしょうか?

ええ、最初から修正やバージョンアップはあるものとして、考慮して
ましたから、その手順で大丈夫ですよ。

それでは、さらに一歩進んで、、

アドイン化したものは、どんな時に実行されるか保証されないので、
注意が必要です。つまり、ActiveSheet がない状態でメニューを
クリックすることも、あり得るってこと...続きを読む

QEXCEL VBAアドイン:シートの右クリックメニューへの追加方法その2

下記「シートの右クリックメニュー追加」+BBBマクロをアドインへ組み込み、皆さんへ配布して、自動的に右クリックメニューに組み込んでBBBマクロを動作させたいのですが、やり方を教えて下さい。
PERSONAL.XLSのThisWorkbookにAddinstallイベントプロシージャーで下記のように記述しましたがエラーが出ます。
どのように修正すれば良いか、教えて下さい。
また、やり方はこれでOKでしょうか。
なお、標準モジュールに登録して実行すると動きます。
宜しく、お願いします。

「エラー内容」
実行時エラー’91’
オブジェクト変数またはWithプロック変数が設定されていません。

Sub シートの右クリックメニュー追加()
 With CommandBars("Cell").Controls.Add
 .Caption = "AAA(メニューの表示文字)"
 .OnAction = "BBB(実行するマクロ名)"
 .BeginGroup = True
 End With
End Sub

Aベストアンサー

>PERSONAL.XLSのThisWorkbookにAddinstallイベントプロシージャーで下記のように記述しましたが
PERSONAL.XLSに記述するのではなく新たに新規ブックで作成します。
'ThisWorkbookモジュールに
Private Sub Workbook_Open()
  With Application.CommandBars("Cell").Controls.Add(Temporary:=True)
    .Caption = "AAA"
    .OnAction = "BBB"
    .BeginGroup = True
  End With
End Sub
'標準モジュールに
Sub BBB()
  '○×△・・・
End Sub
このブックをアドインファイルとして保存する
メニューから[ファイル]-[名前を付けて保存]-[ファイルの種類]-Microsoft Excel アドイン(*.xla)を選択しファイル名を入力して保存
つぎに作成したアドインを使えるようにします。
メニューから[ツール]-[アドイン]-で使えるアドインの一覧が出ますので先ほど保存したアドインにチェックを入れて[OK]
これで使えるはずです。

>PERSONAL.XLSのThisWorkbookにAddinstallイベントプロシージャーで下記のように記述しましたが
PERSONAL.XLSに記述するのではなく新たに新規ブックで作成します。
'ThisWorkbookモジュールに
Private Sub Workbook_Open()
  With Application.CommandBars("Cell").Controls.Add(Temporary:=True)
    .Caption = "AAA"
    .OnAction = "BBB"
    .BeginGroup = True
  End With
End Sub
'標準モジュールに
Sub BBB()
  '○×△・・・
End Sub
このブックをアドインファイルとして...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qエクセル マクロで指定フォルダを開く

エクセルにて
指定フォルダを開く、マクロがあれば教えて頂けないでしょうか。
よろしくお願いいたします。

Aベストアンサー

こんにちは。

こういうものですか?
開くフォルダを変えたいときは targ に与えるパスを変更します。

Sub OpenFolders()
Dim targ As String
targ = "C:\"
Shell "C:\Windows\Explorer.exe " & targ, vbNormalFocus
End Sub

Qマクロからマクロを呼び出す方法

ブックの中にあるマクロを呼び出すマクロを書きたいです。
Sub Macro2()
  Application.Run "Book1!Macro1"
End Sub
とすると、book1のmacro1しか呼び出せませんが、マクロを書いているファイル(コピーして仮にbook2)
のマクロを呼び出すにはどのように書けばよいでしょうか?(マクロブックだけ他のファイルにコピーして使う用途を想定しています。

Aベストアンサー

少し、こちらの回答を加えさせていただきます。

>マクロを書いているファイル(コピーして仮にbook2)のマクロを呼び出すにはどのように書けばよいでしょうか?

それは、いずれにしても、アドイン型のマクロのことではありませんか?

>マクロブックを別に作ってそれを呼び出した方が安全ですね。
安全性というなら、アドイン型でも同じことです。手数が少し増えるだけです。

以下の場合は、実際は登録したものを呼び出しているわけです。ただし、こういうファイルは決められた所に置いてください。あちこちに置かないほうがよいです。フリーツールなどても、独自のフォルダを作るものがありますが、それは良い習慣ではありません。

Sub CallmyAddin()
 'Application.UserLibraryPath 'ユーザーアドインパスはここが良い
 Const ADDINFN As String = "TestAddin"
 With AddIns(ADDINFN)
  Application.EnableEvents = False
  '呼び出すとファイルが開いてしまう
  Application.Run "'" & .FullName & "'!" & "Test1"
  Application.EnableEvents = True
  Workbooks(.Name).Close False
 End With
End Sub

'----
アドインは、、一旦、アドインファイル自体を削除すれば、ワークシートのメニューからアドイン名をクリックすれば名称は消せます。アドイン型ファイルでも、アドイン型にしておいて、見えないワークシートを利用していることもあるようです。ブックのThisWorkbook のプロパティの IsAddin をTrue にすれば、開いてもブックは見えないです。取り扱いがややこしくなります。

Sub myReferenceMacro()
'参照設定をする場合
  myProject.TestMacro1 
  'myProject は、ユニークなプロジェクト名 TestMacro は、マクロ名
End Sub

VBAの参照設定に設定します。その場合、IsAddin を True にすればよいです。元のファイルを開けば、見えなくてもファイルはオープンしていますし、元のブックを閉じれば、見えないファイルはクローズします。なお、ファイルが存在していれば、参照設定自体も、マクロで行うことが出来ます。

少し、こちらの回答を加えさせていただきます。

>マクロを書いているファイル(コピーして仮にbook2)のマクロを呼び出すにはどのように書けばよいでしょうか?

それは、いずれにしても、アドイン型のマクロのことではありませんか?

>マクロブックを別に作ってそれを呼び出した方が安全ですね。
安全性というなら、アドイン型でも同じことです。手数が少し増えるだけです。

以下の場合は、実際は登録したものを呼び出しているわけです。ただし、こういうファイルは決められた所に置いてください。あちこちに...続きを読む

QEXCEL VBAでセルのコピー&ペーストで幅と高さも貼り付けたい

VBとExcelの連携システムを作成しております。
しかし、ExcelのVBAは初めてなので、いろいろと調べながらやっております。が、どうしても分からないので、ご教授願います。

ある条件を満たした時に、セルを範囲選択して、すぐ下に張りつけてる処理を書きました。貼り付ける事はできたのですが、貼り付けた範囲のセルの幅と高さが貼り付けられていない為、プレビューすると、コピーした部分の高さと幅が異なってしまい、改ページの位置がずれてしまいます。

コピー&ペーストの際に、セルの幅と高さもコピー&ペーストすることはできないのでしょうか?

Aベストアンサー

A1の幅と高さをB2に反映するときには

Columns("B:B").ColumnWidth = Columns("A:A").ColumnWidth
Rows("2:2").RowHeight = Rows("1:1").RowHeight

で良いと思います。


人気Q&Aランキング