人に聞けない痔の悩み、これでスッキリ >>

Excel VBAを使っていて
ListviewなどのMSCOMCTL.OCXに依存した
コントロールを使っている場合
MSCOMCTL.OCXに上位互換性がないため、
VBAを含むxlsmファイルを作成したPCとは異なるPCで
そのプログラムを使用するためには
使うPCごとにMSCOMCTL.OCXをアップデートする必要があります。

http://detail.chiebukuro.yahoo.co.jp/qa/question …

詳細はこのページに書かれてあります。

疑問は、いま、自分が使っているMSCOMCTL.OCXのバージョンが2012年のものなのですが
Windows10にアップグレードするなどした場合に
MSCOMCTL.OCXをアップグレードする必要がありますが
VBAは正常に動作するのでしょうか?

MSCOMCTL.OCXには下位互換性があるのでしょうか?

もし動作しないとして、
一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
自動更新できる方法があれば教えてください。

質問者からの補足コメント

  • 参照設定って
    「Microsoft ListView Control 6.0(SP4)」か
    「Microsoft Windows Common Controls 6.0(SP6)」などのチェックのことでしょうか?
    mscomctl.ocxのバージョンが異なると
    チェックを入れる項目が変わるということですか?
    例えば、SP6がSP7とか8にする必要があるという意味でしょうか?

    もしそうだとして、
    予め、新しいライブラリの名称さえ分かっていれば
    http://officetanaka.net/excel/vba/tips/tips100.htm

    このページの方法で自動設定することは可能でしょうか?

    あと、バグがあったのは何年と何年のバージョンの間でしょうか?
    2003年辺りですか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/11/13 20:34
  • ご回答ありがとうございます。

    >参照設定は一度行ってしまえば同じ環境であるかぎり一回だけ必要なことでしかない

    というのは、mscomctl.ocxをVBAを作成したPCと同じバージョンと同じに更新した場合ということではなく
    mscomctl.ocxを更新せずに行えるという意味でしょうか?

    例えば、
    週に一度くらいの頻度でWin10で作成したVBAを
    Win7のPCを使っている人に渡したとして
    mscomctl.ocxを更新せずにつかうことはできるのでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/11/13 22:57
  • すいません、質問の意図が伝わっていないのですが
    正式な名称が分からないので仮称となりますが
    例えば、
    Win7のPCでは「Microsoft ListView Control 6.0(SP4)」、
    Win10のPCでは「Microsoft ListView Control 7.0(SP6)(仮称)」に登録がなされているとします。

    Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、
    「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。

    しかし、mscomctl.ocxのバージョンを更新しないとWin7 PCには
    「~7.0(SP6)(仮称)」が存在しないのではないでしょうか?

    オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2015/11/14 12:44
  • 納得しました。

    ありがとうございました。

    No.5の回答に寄せられた補足コメントです。 補足日時:2015/11/17 12:15

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

A 回答 (5件)

>Win10 PCで作成したVBAをWin7 PCにコピーして使用するためには、


>「~7.0(SP6)(仮称)」にチェックを入れる必要があるはずです。
その場合にはWin7PCではMicrosoft ListView Control 6.0(SP4)にチェックを入れなおせば
まず問題ないはずです。
ちなみに当方のWin7 Office2010 のMicrosoft ListView Controlの実体ファイルの
製品バージョンは6.01.9839
Win10 Office2016(プレビュー版)のmscomctl.ocxのバージョンも同一でした。
単純なテストですが、2016 → 2010 では問題なかったです
VBAはよく言えば枯れた状態ですので大々的なアップデートは無いでしょう。
あったとしたらMicrosoft ActiveX Data Object x.x Libraryと同様
Microsoft ListView Control 6.0・・・
Microsoft ListView Control 7.0・・・
のように複数バージョンが並行して登録されるとおもいます。

>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
大多数の人は更新プログラムを自動的にインストールする設定にしたままだと思います。
最新にというかリビジョンを合わせた方がつまらないトラブルにならないと思います。
ただ、近年のアップデートは地雷が多すぎて何とも言えなくなりました。。。
この回答への補足あり
    • good
    • 0

こんにちは。



Office 2003の時はMSのサポートに出ていましたから、VB6ランタイムはあることは知っていましたが、それ以降も、調べてみたら、バージョンアップしたものがあるようなのですね。ただ、なんだかんだで、わざわざVB6 Runtime をインストールしていました。

それにまつわる話ですが、ListView とかCommonDialog とかいうのなら、VB6 Runtime のことではないでしょうか。個別のコントロールそのものよりも、そのRuntime が、OSをカバーしているか、もしくはセキュリティーを通過するかどうかだと思うのです。

それから、知恵袋のやり取りは変です。MSCOMCTL.OCXの下位のバージョンについては、バージョンが違えば動かないのは当然だと思うのですが、リビジョンとバージョンの話が混同しているようで、リビジョンが違ったら動かないという印象に受け取れますが、そんなことはないはずです。それに、Excel 2003の話です。何か別のトラブルのようです。

それと、今回の話は、以下のような話のことではあるわけです。
http://blog2.k05.biz/2015/06/windows10vb6.html
》Windows 10 Insider Preview版で確認したので、製品版では問題がなくなってるのかもしれません

そこには、動かなくなった場合に対処すればよいだけだと思っています。

>mscomctl.ocxのバージョンを更新しないとWin7 PCには
>「~7.0(SP6)(仮称)」が存在しないのではないでしょうか?
Dao 3.5では、確かに以前から混乱はあったように聞きますが、VB6 Runtime でトラブルがあれば、ダウンロードするしかないと思います。たぶん、そんな問題はないはずですが。

少なくとも、Microsoft ListView Control 6.0 が、7.0になることはありえないにしても、仮にそうだとしたら、そのままではエラーが出て、参照設定を替えるのではなくて、コントロールそのものをすげ替えないといけないでしょうね。そんなことは、考えたくもありませんし、あくまでも仮の話です。

>オフィスを常にアップデートして最新の状態にしておく必要があるということでしょうか?
これはオフィスの話ではなくて、VB6 Runtimeの話です。

http://www.vector.co.jp/soft/win95/util/se123554 …
中身を確認してみないと何とも言えませんが、Win10 には対応しているようですね。

「VB6ランタイムはWindows 10でもサポートされる 」
http://developers.srad.jp/story/15/07/06/0917202/

ただ、私は、まず、現行のランタイムがWin10で動くかどうかをチェックした方がよいと思うのです。現行で動くなら、わざわざ先走る必要などはないと思っています。

それと、ActiveX コントロールは、結果的には参照設定がつきますが、参照設定ではなく、実際に、ツール側で、ActiveXコントロールを呼び出して、使ってみるまで、エラーが発生するかどうかを、動作検証するしか方法はないと思います。

私の経験も含めて、
http://oshiete.goo.ne.jp/qa/8458426.html
にあるように、「サブジェクトは指定された動作に対して信頼されていません」ということもあります。こうなってしまうと、ふつうは諦めざるを得ないのです。

むろん、ご質問者さんのご心配なるように、OSによって動かないというのはあり得る話です。
>一つずつListviewを削除して新規作成するという作業を行う必要があるのでしょうか?
>自動更新できる方法があれば教えてください。

よほど何かトラブルがなければ、Listviewを削除して新規作成ということにはなりませんせんが、Runtime の更新は必要になるでしょう。

>週に一度くらいの頻度でWin10で作成したVBAを
>Win7のPCを使っている人に渡したとして

この場合は、アプリが下位互換とは言わないと思います。リビジョンの違いはあったとしても、同じバージョンなら、使えないはずはないと思います。

ここの資料は、圧巻です。
http://homepage2.nifty.com/nonnon/Chinamini/2010 …

それから、
>MS社のセキュリティアップデートにバグ
すでに回答はついていますが、それとは違って、2014年の12.10 Office Update事件(w)と違うのでしょうか?他は忘れても、これは忘れませんです。みんな、大混乱してしまいました。
    • good
    • 0

mscomctl.ocx自体はWindowsではなくてOffice製品に付属します。


古いバージョンのExcelでVBAが問題なく機能するためには参照設定の変更が必要です。
(2016→2010での確認)
古いバージョンで作成後に新バージョンで使用する際には必要ありません。
mscomctl.ocxのバージョンを新旧で合わせる必要はありません。

質問の意味を取り違えているかもしれませんが
Win10 & Excel2016 にあるmscomctl.ocxをWin7 & Excel2010 にコピペして・・・
という考えでしたら、
まずライセンス違反、
多分レジストリの登録のやり直しが必要、
また、今後にExcel2010上でmscomctl.ocxのセキュリティアップデートがあった場合に厄介なことになりそうです。

Excelのバージョン(アップデートも適用されている)が同じなら
Win10⇔Win7間のやり取りなら参照設定のチェックをせずとも動くハズです。(未検証)
この回答への補足あり
    • good
    • 0

参照設定の一覧で『参照不可』になっていることで確認します。


[レ]参照不可 Microsoft Windows Common Controls 6.0(SP6)となります。
↑チェックを外して一覧から探し出してチェックを入れなおすか
ファイル名はわかっているので[参照(B)]から
C:\windows\SysWow64\mscomctl.ocx を指定します。

Excel2002以降ではセキュリティ上の観点からVBAのオブジェクトへVBAを用いてアクセスするには
セキュリティセンターのマクロの設定で、
『VBA プロジェクト オブジェクト モデルへのアクセスを信頼する』にチェックが必要になりました。
(Excel2010の場合です。他のバージョンでも同様な設定項目があるかと思います)

で、OfficeTanakaさんのところにも書いてあるように「参照不可」になっている場合は
VBAでチェックを外すことは出来なさそうです。
Excel2002の時に色々試したりGoogleったりしましたが解決できませんでした。
参照設定は一度行ってしまえば同じ環境であるかぎり一回だけ必要なことでしかないので
それ以降考えたことはありません。

あの問題は、2012年の夏のことでしたね。
http://answers.microsoft.com/ja-jp/office/forum/ …
この回答への補足あり
    • good
    • 0

現、Windows7 & Excel2010



新、Windows10 & Excel2016
などの場合には完全にとは言えないかもしれませんが、
ほとんどの場合でExcel内部で自動的に判断されるので問題ありません。

逆に、
現、Windows7 & Excel2010

新、Windows10 & Excel2016で作成
のように旧バージョンで動かそうとすると
VBEの参照設定を変更しなくてはいけない場合が多くなりますが
Listviewコントロール自体の作り直しが必要になることは、まず無いと思います。

リンク先の投稿ですが、あの時には、MS社のセキュリティアップデートにバグがあり
MS社の修正パッチの公開を待っていたら業務が滞るので手作業でファイルの置き換え、
レジストリの書き換え、コントロールの作り直しで対応していました。
通常であれば必要のない作業でした。
その後、修正パッチが公開されてあの問題は収束しました。

繰り返しになりますが、mscomctl.ocxに限定でいうと、
新バージョンに移行する場合には何も気を配る必要はないでしょう。
旧バージョンのExcel環境で使えるようにするには、
参照設定の確認が必要です。
この回答への補足あり
    • good
    • 0

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

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

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

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

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

QAccessで MSCOMCT2.OCX 参照不可をコードで解決したい

宜しくお願いします。

Access2003(WinXP)でオブジェクトを配置してコードを書いています。
自分のPCでは問題ないのですが、他人のPCで稼動させると
『MSCOMCT2.OCX ver2.0』参照できません というようなエラーが出ます。
ツール→参照設定を開くと 
Microsoft Windows Common Control-2 6.0(SP4)
が参照不可になっていました。
チェックをはずせばOKですが、この作業をコードで出来ないでしょうか。
ちなみにExcelを開くイベントもあり、そちらは Create Object で解決できました。同じように・・・と思ったのですが、どういうコードを書いたら良いのか分かりません。。
宜しくお願いします。

Aベストアンサー

こんにちは。

もう一度、話を遡って見なければならない気がします。

>自分のPCでは問題ないのですが、他人のPCで稼動させると

そこで、私が考える方法は、三つあります。

>COMDLG32.OCX (Microsoft Common Dialog Control 6.0 SP3)
もともと、これを使う必要があったのでしょうか。

もともと、Office 2003に標準的に付いてくる Runtime には入っていないように思います。

ひとつは、通常、Access で、DT Picker など使う必要もないわけですから、参照設定を外してあればよいのではなかったのではないでしょうか。そういう私のところもCommon Dialog は入っていますが、こちらは、COMDLG32.OCX が、参照設定のリストには入っていませんでした。

もうひとつは、Office 下位バージョンで作成することです。もし、下位バージョンが用意できれば、という条件です。下位バージョンから、上位バージョンには切り替えができます。それは、少し現実的ではないかもしれません。

最後は、そのActive X が、外れない場合のことですが、自分のPCから、問題のActive X を一旦、外してみる、つまり、MSCOMCT2.OCX を外してしまう、ということです。手動では面倒なので、調べてみると、以下のようなツールがありました。入れるほうも簡単に入ります。

レジストリ登録
OCX、DLLコントロールをレジストリに登録する
http://www.vector.co.jp/soft/winnt/prog/se454812.html

こんなことを考えてみました。

こんにちは。

もう一度、話を遡って見なければならない気がします。

>自分のPCでは問題ないのですが、他人のPCで稼動させると

そこで、私が考える方法は、三つあります。

>COMDLG32.OCX (Microsoft Common Dialog Control 6.0 SP3)
もともと、これを使う必要があったのでしょうか。

もともと、Office 2003に標準的に付いてくる Runtime には入っていないように思います。

ひとつは、通常、Access で、DT Picker など使う必要もないわけですから、参照設定を外してあればよいのではなかったので...続きを読む

Qmscomct2.ocxをパソコンに導入するには?

ACCESS2003 mscomct2.ocxを新しいパソコンに導入するには?

windows7 home premium 32bit
Access2003

パソコンを買い換えたため、以前使用していたACCESS2003で作ったmdbファイルを移動しました。
開こうとしましたがエラーが出て開かず(エラーの内容は忘れましたが、何かが足りないといった事だったと思います)、日付の入力にDTPickerを使用していたことに気付いてmscomct2.ocxをwindows\system32フォルダに入れました。
無事、起動は出来たのですが、フォームを開こうとすると「このコントロールにはオブジェクトがありません」というメッセージが現れて、配置したDTPickerが消えています。

フォームの ツール-ActiveXコントロール の利用可能なコントロールの中には入っておらず(当然^^;)、登録から mscomct2.ocx を選択すると「追加することはできませんでした。別のセットアッププログラムを使って追加してください。」と出ます。
そこで、Visual Basic の ツール-参照設定 を見てみますと 参照可能なライブラリファイルの中に Microsoft Windows Common Control-2 6.0(SP4) にチェックが入っています。
試しにと、一度チェックをはずしてACCESSを再起動してみると Microsoft Windows Common Control-2 6.0(SP4) が消えていてチェックを入れることも出来なくなりました。(でも、起動はします。)

mscomct2.ocxを使えるようにするにはどのようにしたら良いのでしょうか?
以前、パソコンがクラッシュして再インストールしたときは mscomct2.ocx をsystem32に放り込んだだけで問題なかったような気がしたのですが・・・。7は少し違うのでしょうか?
もし同様の経験のある方がいらっしゃいましたら是非ともご教示下さい。

ACCESS2003 mscomct2.ocxを新しいパソコンに導入するには?

windows7 home premium 32bit
Access2003

パソコンを買い換えたため、以前使用していたACCESS2003で作ったmdbファイルを移動しました。
開こうとしましたがエラーが出て開かず(エラーの内容は忘れましたが、何かが足りないといった事だったと思います)、日付の入力にDTPickerを使用していたことに気付いてmscomct2.ocxをwindows\system32フォルダに入れました。
無事、起動は出来たのですが、フォームを開こうとすると「このコントロールにはオブジ...続きを読む

Aベストアンサー

通常、Office 2003をインストールするときに、VB6 RuntimeのCommon Controlもインストールされるはずですが、それが出来ていない場合は、
Visual Basic 6.0 Service Pack 6:ランタイム再頒布可能パッケージ

をMicrosoft サポート(Vector でも可)で探して、ダウンロードして再インストールします。
すでにあるものに、手動で行うなら、コマンドプロンプトから、regsvr32.exe で、ActiveX を、サーバー登録すればよいのですが、管理者権限でないと、セキュリティに弾かれるかもしれません。

http://support.microsoft.com/kb/957924/ja
Visual Basic 6.0 Service Pack 6 ランタイム拡張ファイル用の累積的な更新プログラムのロールアップについて

ここを読んでみると、Vista以降は、アップデートしなくてはいけないようです。

同サイトの内容の一部
$この累積的な更新プログラムのロールアップは本当に必要ですか。
$はい。この累積的な更新プログラムのロールアップには、既に説明したセキュリティ
$修正プログラムと、Visual Basic 6.0 ランタイム拡張ファイルに収められている
$ActiveX コントロールに関する他の複数の安定性...

通常、Office 2003をインストールするときに、VB6 RuntimeのCommon Controlもインストールされるはずですが、それが出来ていない場合は、
Visual Basic 6.0 Service Pack 6:ランタイム再頒布可能パッケージ

をMicrosoft サポート(Vector でも可)で探して、ダウンロードして再インストールします。
すでにあるものに、手動で行うなら、コマンドプロンプトから、regsvr32.exe で、ActiveX を、サーバー登録すればよいのですが、管理者権限でないと、セキュリティに弾かれるかもしれません。

http://support.micro...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

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
'-------------------------------------
 
 

QVBAの参照設定について

osは、Wxpで、エクセル2003使用してます。
あるコードを実行したところ、コンパイルエラーメッセージが出て、
調べたところ、参照設定の中の、Microsoft Windows Common Controls
5.0(SP2)が、参照不可となっていました。たぶんこれじゃないかなと、
調べたりしたのですが、参照可能にする方法がわかりません。
可能になってるマシンでは、動作は正常で、不可になってるマシンでは、
正常に動きました。
参照可能にする方法を、どうか教えてください。
よろしくお願いします。

Aベストアンサー

こんにちは。

既にできあがっているものを動作させたいだけなら、VB5 または
VB6 のランタイムをインストールすれば動くかもしれません。

ベクターあたりで探せばすぐに見つかります。

 # 要するに、VBA 用のコントロールではないということです。

QVB6のプロジェクトロードエラーについて

よろしくお願いします

現在、VB6で開発しているシステムのメンテナンスを行なっているのですが、
先週まで正常にロードされていたプロジェクトでエラーが起こるようになりました。

プロジェクト起動後、オブジェクトライブラリは登録されていません。のメッセージBOXが出て、引続きフォームのロードを続けると、読込中にエラーが発生しました。詳細はlogを確認。というメッセージBOXが出ます。

logの内容が「行 17: クラス MSComctlLib.StatusBar(コントロール StatusBar1) はロードされていません。」という内容です。

最後にロードした時から触ってないのですがエラーになり始めました。

ただ、PCにaccess2010をインストールしましたのでその影響が出ているのでしょうか?

すみませんが、よろしくお願いします。

Aベストアンサー

VB6の新しいプロジェクト
MSCOMCTLをツールボックスに追加
フォームにStatusBarを貼り付け
プロジェクトを保存
vbpファイルをメモ帳で開いて、元のvbpファイルと比べてみる

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qコモンダイアログコントロールがコンポーネントにありません

VB6.0 win2000を使用しています。

コモンダイアログを使用したいと思い、
メニューの[プロジェクト]-[コンポーネント]Microsoft Common Dialog Control 6.0にチェックを入れようとしたところ、
メニューにMicrosoft Common Dialog Control 6.0がありません。

これはどうしたらいいのでしょうか?
VB超初心者です。

よろしくご指導お願いします_(__)_

Aベストアンサー

NO.1です。
コモンコントロールと間違えましたっm( )m
コモンコントロールはCOMDLG32.OCXですね。

普通入ってるハズですね。
VBAなんですけど、以前WinXPで開発したプログラムを、Win2000で書き換えて保存して、またWinXPに持って行ったらコモンコントロールが一覧から消えました。
Win2000の方にはCommon Control 6.0 (SP4)
WinXPは(SP4)はついて無かったので、バージョンが違うとおかしくなるのかな~と理解し、No1の方法で解決しました。

今回はどうでしょう?ファイルすらなかったらVB6を再インストールでしょうね。

QExcelVBA でリストリストボックスに列見出しをコーディングでつける

エクセルVBAのフォームにリストボックスを作り、データーベースから読み出したデータを表示させています。

この時、各列にテーブル名とはちがう列名をつけたいのですが、シートに記述するのではなく、コーディングでつける事は出来ませんか?

ControlTipTextに「test1;test;test3;」と指定してみたりしましたが、駄目でした。

どなたかご教授、あるいは出来ません、シートに隠しか方法はありません、と全否定をしてください。

Aベストアンサー

Wendy02 です。配列で入れる方法を考えてみましたが、できませんでした。

結局、他の方法としては、ListBox の 上に、白のLabel をそれぞれのColumnにあわせて、表示するぐらいしか、思いつきません。(これは、論外でしょうね)

列見出し(フィールド)は、もともと、Excelのワークシートの、データベース用の仕様のひとつだから、Rangeオブジェクトでしか、ListBox の Header に入れることは、出来ないようです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング