位置情報で子どもの居場所をお知らせ

Excel2003のVBEの「ツール」メニューの「参照設定」で表示される「参照設定」ダイアログボックスの「参照可能なライブラリファイル」のリストボックスに、VS2010などでVB.NETのクラスライブラリをCOM相互運用機能を登録をオンにしてビルドするとそのソリューション名が自動的に登録されてチェックボックスを伴って表示されると思いますが、いろいろビルドしているうちに、このリストボックスに「ClassLibrary1」が多数表示されてしまっているのですが、今となってはほとんとが不要なので、参照設定を解除して表示されないようにしたいのですが、「参照設定」ダイアログボックス上には「削除」ボタンがありませんが、これらを消すにはどのようにすればよいのでしょうか。

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

A 回答 (1件)

プログラマって文章能力が高いと思ってたけどなぁ。



---------------------------------------------------
VB.NET 2010 で "COM の相互運用機能に登録" を指定したクラスライブラリを作成しています。
いろいろビルドしているうちに、VBA エディタの参照設定ダイアログに ClassLibrary1 が多数表示されるようになってしまったのですが、これを削除するにはどうしたらよいのでしょうか。
---------------------------------------------------
てな質問でよろしいか。

一般的に COMコンポーネントの登録と解除は Regsvr32.exe を使う。
http://www.bing.com/search?q=regsvr32.exe&qs=n&f …

.NET で作成したライブラリの場合は regasm.exe を使う。
http://www.bing.com/search?q=regasm.exe&qs=n&for …
http://msdn.microsoft.com/ja-jp/library/tzat5yw6(v=vs.80).aspx
http://oshiete.goo.ne.jp/qa/4539797.html

この回答への補足

>一般的に COMコンポーネントの登録と解除は Regsvr32.exe を使う。
>.NET で作成したライブラリの場合は regasm.exe を使う

COM相互運用機能を登録がオンなのでRegsvr32の方と思いますが
確認してみましたが、以下のような結果になり解除できませんでした。
念のため、ExcelのVBAを起動して参照設定を見てみましたが
表示されたままで解除されていません。

Regsvr32 /u ClassLibrary1.dll
を実行すると「ClassLibrary1.dllは読み込まれましたが、DllUnregisterエントリポイントが見つかりませんでした。このファイルが登録されていない可能性があります。」
と表示されます。

念のため
Regsvr32 /u ClassLibrary1.tlb
でも確認してみましたが
「"C:\…\ClassLibrary1.tlb"は実行ファイルではないか、またはこのファイルのヘルプが登録されていない可能性があります。」
と表示されます。

当時のフォルダ・ファイルが削除されていて存在していない場合は
「LoadLibrary("C:\…\ClassLibrary1.dll")に失敗しました-指定されたモジュールは見つかりません。」
と表示なされます。

COM相互運用機能を登録がオンなのでregasmではないと思いますが
Regsvr32で正しくできなかったので、念のためregasmでも確認してみましたが
「型は正常に登録が解除されました」
と表示されますが、ExcelのVBAを起動して参照設定を見てみると
表示されたままで解除されていません。

1つのClassLibrary1.dllだけでなく、
登録したすべてのClassLibrary1.dll
で解除できませんでした。

なぜ解除できないのか原因がよくわかりません。

よろしくお願いします。

補足日時:2012/11/05 10:29
    • good
    • 0
この回答へのお礼

回答を待っていましたが回答がありませんでしたので一旦クローズします。ありがとうございました。

お礼日時:2012/11/22 09:08

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

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

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

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

QエクセルVBAにて参照設定で不明・・・・

いつもお世話になります。早速ですがエクセルVBAにて 社内で作成したエクセルで正常に作動していたマクロが客先にセットアップしたところFormat文やMid関数でエラーが出てしまいます。開発もとのPCにはVB6.0 VB.NET がインストールされていますが客先にはされていません、何か関係がありますか?専門の知識のある方どうぞ宜しくお願いします。
※客先PCでVB EDIT画面でツール→参照設定を見てみますと不明な項目が幾つかあります。

Aベストアンサー

同じ現象がVBで起きたことがあります。

開発環境で使用しているDLLが客先の環境に存在しないことが原因かと思います。
客先PCで参照設定を見たとき、「参照不可」の項目がありませんか?「参照不可」の項目のチェックを外し、「参照不可」のDLLと同じ働きをもつDLLを参照設定してください。客先PCに同じ働きをするDLLが存在しないなら、客先PCに存在しないDLLを手動で客先にコピーするか、手っ取り早く客先PCにVB6.0 VB.NETをインストールしてください。
最終的にデバッグ→コンパイルして引っかからなければOKです。

QExcelのVBAによる参照設定について

VBAによる参照設定について教えてください。
以前にOffice2010と2003の互換性の問題について教えていただいた際に、以下のようなやり方を教えていただき、AccessのVBAでExcelの参照設定はできたのですが、ExcelのVBAでAccessの参照設定をしようとした際に「Dim Ref As Reference」の部分が「ユーザー定義型は定義されていません」となってしまいコンパイルできません。Accessの参照設定にチェックを入れると問題ないので、Excelに「Reference」というデータ型が使えないのだと思うのですが、Excelではどのように書いたらよいのでしょうか?

On Error GoTo Err_Rise

Dim Ref As Reference

Const strGUID As String = "{00020813-0000-0000-C000-000000000046}" 'Excelの参照設定をする場合
Const strGUID As String = "{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}" 'Accessの参照設定をする場合

Set Ref = References.AddFromGuid(strGUID, 1, 3)
Set Ref = Nothing

Err_Rise:
If Err.Number = 32813 Then
Resume Next
End If
On Error GoTo 0

VBAによる参照設定について教えてください。
以前にOffice2010と2003の互換性の問題について教えていただいた際に、以下のようなやり方を教えていただき、AccessのVBAでExcelの参照設定はできたのですが、ExcelのVBAでAccessの参照設定をしようとした際に「Dim Ref As Reference」の部分が「ユーザー定義型は定義されていません」となってしまいコンパイルできません。Accessの参照設定にチェックを入れると問題ないので、Excelに「Reference」というデータ型が使えないのだと思うのですが、Excelではどのように書...続きを読む

Aベストアンサー

すこしだけ判ったっぽいかも。

テスト条件
Excel2010

参照設定
Visual Basic for Applications
MIcrosoft Excel 14.0 Object Library
OLE Automation
Microsoft Visual Basic for Applications Extensibirity 5.3
Microsoft Office 14.0 Object Library
(Access にはまだ入れていません)

Excelの設定
ファイル→オプション→セキュリティセンター→マクロの設定から
VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
にチェックを入れて置きます。

Sub refList()
  '要参照設定 Microsoft Visual Basic for Application Extensibility x.x
  Dim ref As Reference
  For Each ref In Application.VBE.ActiveVBProject.References
    Debug.Print ref.Name
    Debug.Print ref.GUID
    Debug.Print ref.Major
    Debug.Print ref.Minor
    Debug.Print "--------------"
  Next
  Set ref = Nothing
End Sub
これでイミディエイトウィンドウに設定のリストが出力されます。
Microsoft Access14.0 Object Library に参照設定のチェックを入れて
行うと
Access
{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}
9
0
が得られますので
Sub refSet()
  Dim ref As Reference
  With Application.VBE.ActiveVBProject.References
  Set ref = .AddFromGuid("{4AFFC9A0-5F99-101B-AF4E-00AA003F0F07}", 9, 0)
  Set ref = Nothing
  End With
End Sub
のような事をするとAccessに参照設定できました。
Reference オブジェクトは、AccessにもありますのでVBE?を指定してあげないと
うまく行かないようです。(ちょっと怪しい解説)

少し思うのは、参照設定をVBAで自動的に行うよりも
参照設定を行っておいて開発し、出来上がったら参照設定を外して
CreateObject("Access.Application") で実行時バインディングにして
細々とした修正を行った方が良いように感じます。

すこしだけ判ったっぽいかも。

テスト条件
Excel2010

参照設定
Visual Basic for Applications
MIcrosoft Excel 14.0 Object Library
OLE Automation
Microsoft Visual Basic for Applications Extensibirity 5.3
Microsoft Office 14.0 Object Library
(Access にはまだ入れていません)

Excelの設定
ファイル→オプション→セキュリティセンター→マクロの設定から
VBA プロジェクト オブジェクト モデルへのアクセスを信頼する
にチェックを入れて置きます。

Sub refList()
  '要参照設定 Microsoft Visual...続きを読む

QExcelでVBAで自動参照設定

Excel VBAで参照設定をモジュールで行いたいのですが、
何かいい方法はありますか。
宜しくお願い致します。

Aベストアンサー

> Excel VBAで参照設定をモジュールで行いたい

このような需要は、例えば WinXP, Win2000 のように異なる OS が
混在する環境であっても使用するライブラリへの参照設定を有効に
するためかと思いますが...

Excel について言えば、開発 PC 以外でそれを実行しようとしても

 ・参照不可となった時点で、ライブラリに依存したコードは
  コンパイルエラーとなり、実行不可となる

つまり、

 ・参照設定を更新するコードも当然動かない

のですけども、その点については大丈夫ですか?

参照設定を更新するというアプローチではなく、#1 ご回答のように、

 ・CreateObject を使う(レイトバインド)
 ・使用が想定される PC の OS, OFFICE の一番下位バージョンに
  合わせてコードを書く
 ・最初から特殊なライブラリは使わない

といった工夫をした方が確実ですよ。

もし上述の問題が問題とならない、またはクリアされている状況での
ご質問でしたら、パス指定の AddFromFile に加え、AddFromGUID
メソッドも考えてみて下さい。

例えば、システムフォルダなら

 WinXP --> C:\Windows\System32
 Win2K --> C:\WinNT\System32

といった違いがありますから。

> Excel VBAで参照設定をモジュールで行いたい

このような需要は、例えば WinXP, Win2000 のように異なる OS が
混在する環境であっても使用するライブラリへの参照設定を有効に
するためかと思いますが...

Excel について言えば、開発 PC 以外でそれを実行しようとしても

 ・参照不可となった時点で、ライブラリに依存したコードは
  コンパイルエラーとなり、実行不可となる

つまり、

 ・参照設定を更新するコードも当然動かない

のですけども、その点については大丈夫ですか?

参...続きを読む

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

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

Aベストアンサー

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

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

QVBAで参照設定を行いたい GUIDを知るには?

オフィス2010なのですが、
VBAで参照設定を行いたいのですが
GUIDというのはどうやって調べればいいのでしょうか?

例えばエクセルに参照設定したいのですが
レジストリエディタを立ち上げて、
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel
のどの部分を見れば、GUIDがわかりますか?

http://www.moug.net/tech/acvba/0010004.html
を参考にvbaコードを作っていますが、


Public Function SetGUID()
On Error GoTo Err_Check:
Dim Ref As Reference

'Microsoft Excel 9.0 Objects Library (Excel2000)
Const strExcel As String = "{00020813-0000-0000-C000-000000000046}"

'参照設定
Set Ref = References.AddFromGuid(strExcel, 1, 3)

Func_Exit:
Set Ref = Nothing
Exit Function

Err_Check:
If Err.Number = 32813 Then
Resume Next
Else
MsgBox "Error Number : " & Err.Number & vbCrLf & Err.Description
GoTo Func_Exit:
End If
End Function

やはりこれだと、参照設定できません。
もちろんオフィスのバージョンが違うからだと思いますが。

あと、AddFromGuidメソッドの引数Major、Minorも、どの値を設定してあげればいいのかわかりません。
ご教授よろしくお願いします。

オフィス2010なのですが、
VBAで参照設定を行いたいのですが
GUIDというのはどうやって調べればいいのでしょうか?

例えばエクセルに参照設定したいのですが
レジストリエディタを立ち上げて、
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel
のどの部分を見れば、GUIDがわかりますか?

http://www.moug.net/tech/acvba/0010004.html
を参考にvbaコードを作っていますが、


Public Function SetGUID()
On Error GoTo Err_Check:
Dim Ref As Reference

'Microsoft Excel 9.0 ...続きを読む

Aベストアンサー

そこまで近づいておきながら・・・。
一番下に、
タイプライブラリのGUIDやバージョンを取得する
http://www.moug.net/tech/acvba/0020002.html
がありますよ。

参照設定を自動的に行う (AddFromFileメソッド)
http://www.moug.net/tech/acvba/0010005.html
も一緒に調べてみたほうが吉。

なお、両方ともAccessを対象としているので
Excelの場合は、
http://oshiete.goo.ne.jp/qa/7648287.html
のようになるのかな?と思います。

QVBA 実行時エラー1004 rangeメソッドは失敗しました。globalオブジェクトのエラー

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義がまずいと思うのですが、それ以上の事は分かりません。どなたか、分かる方がおりましたら、よろしくお願いします。また、プログラムは以下のようになります。

Sub 繰り返し()
'繰り返し
Dim s As Integer
For s = 0 To 17
Range("cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)").Select
Range("cells(8,s+2)").Activate
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("20081216_210647").Range( _
"cells(8,1):cells(1580,1),cells(8,s+2):cells(1580,s+2)"), PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).Name = "=""0810p2x"""
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="0810p2x"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "0810p2x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "t"
.Axes(xlValue, xlPrimary).HasTitle = False
End With
Next
End Sub

始めまして、VBA初心者のものです。
ただいまエクセルでグラフを作成しています。作業自体は単純作業の繰り返しなのでVBAを用いてやりたいのですが、マクロを実行したときに実行時エラー’1004’rangeメソッドは失敗しました。’_global’オブジェクトとメッセージが出て、実行できません。 デバックをすると以下の5行目で黄色のバーが出ていました。自分なりに原因を考えたのですがrangeの関係するところに、Range("A8:A1587,e8:e1587")というような変数を用いないやり方でやると上手くいくので、変数に関する定義...続きを読む

Aベストアンサー

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな(Excelで表示されている)シートが上位オブジェクトとして、自動的に認識されます。

≪例2≫
Sheets("Sheet2").Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、Rangeのみシート名が記述されています。
Sheets("Sheet2").Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
Activeなシートが、Sheet2の場合はエラーになりません。
しかし、ActiveなシートがSheet2以外の場合、エラーが発生します。
直前に、
Sheets("Sheet1").Select
などとしていれば、ActiveシートがSheet1になっていますから、エラーになります。

Sheets("Sheet2").Range(Sheets("Sheet2").Cells(8, 1), Sheets("Sheet2").Cells(1587, 2)).Select
と書いておけば安心です。
Withステートメントを使えばスッキリ纏めることができます。
With Sheets("Sheet2")
  .Range(.Cells(8, 1), .Cells(1587, 2)).Select
End With

# Sheets("Sheet2")の上位オブジェクトが省略されていることにも気がついてください。

>そこで自分で基礎を勉強したいのですが推薦できる参考書などがござ
>いましたら、教えていただけませんか?
私自身は、入門書程度の雑誌を1冊買っただけです。どれが良いとかはよく分かりません。
「マクロの記録」を活用して、参考コードを取得し、汎用性のあるコードに編集しています。
新しい単語があれば、文字カーソルを単語の上に置き、F1キーを押してVBAのヘルプを必ず見るようにしています。
躓いた時は、Web検索して欲しい情報を得たり、あるいは、こうした掲示板で先輩方のお力をお借りしています。

Excel(エクセル)VBA入門:目次
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=4651404
エクセル入門・初級編
http://www.kenzo30.com/excel_kiso.htm

>ご指摘を受けたところを書き換えて回してみた結果、書き換えた箇所
>でエラーがでます。(実行時エラー’1004’’cells’メソッドは失敗
>しました。’global’オブジェクト)
>しかし、何が原因でエラーになるか自分では分かりません。

≪例1≫
Range(Cells(8, 1), Cells(1587, 2)).Select
上記の例では、RangeとかCellsの上位オブジェクトであるシート名が省略されています。
ActiveSheet.Range(ActiveSheet.Cells(8, 1), ActiveSheet.Cells(1587, 2)).Select
というわけです。
マクロ実行時に、Activeな...続きを読む

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)
で切り上げです。

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

QVBA オブジェクトが空かどうか判定する

皆様のお知恵を拝借させてください。

エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト
が入っているかどうか検査したいのですがどうしたらいいでしょうか。

例えば---
Dim a As Workbook
If a <> nothing then ←この部分が分からない。このままだとエラー。
処理
End if
---------
環境
エクセル2003
WinXPsp1

Aベストアンサー

もし、aが空だったら
If a Is Nothing Then 

もし、aが空じゃなかったら
If Not a Is Nothing Then

Qエクセル VBA dll 読み込み時のエラーです

エクセルファイルを作成しました。
ボタンを押すとシートを選ぶような簡単なマクロが付随してます。
サーバーにアップロードする方法で
複数の人間が利用してデータを上書きするものです。

途中でマクロを実行する際に
「dll 読み込み時のエラーです」
と表示されるようになりました。
修正しても不定期で発生します。

VBA標準モジュールのファイルをクリックしても同様で
マクロのコードが参照できません。
ファイルは重い為、圧縮と解凍を繰り返してます。

どのような原因があるのでしょうか。

エクセルもVBAも素人ですので
わかりやすい解説をお願いします。

Aベストアンサー

>原因は何でしょう。
リンク先には、エラーや損傷したレジストリ情報などを読み込んでしまうからだと書かれています。

ただ、こちらとしては、レジストリクリーナーで直ればよいだけですが……。

それと、同じ理屈なら、

C:\Documents and Settings\[User ID]\Local Settings\Temp\
の中のゴミ全部を削除したほうがよいですね。これはOS がXPの場合ですが、Office のキャッシュの残骸だそうです。

今、CCleaner を検索してみましたら、Ver 3.2で、フリーで出ていました。
http://www.filehippo.com/jp/download_ccleaner

インストールする時に、Google のブラウザとか、いろいろ付け加えられてしまうので、気を付けないと設定が変えられることがあります。

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ランキング