VBAでプログレスバーコントロールを使いたい
- excelVBAのコードが終了するのに約1分30秒程かかります。この間進捗商況をある程度表示するものがあったらいいのにと思いました。
- ネットで検索しますと 「VBAでプログレスバーコントロールを利用する。」という説明がありました。それを参考に、やっとツールボックスのアイコンの中に「prgressBar」を追加することができました。
- ツールボックスからコマンドボタンをホーム上にドラッグし「実行」と名前をつけました、次にツールボックスから「progressbor」のアイコンをホーム上にドラッグすると「ライブラリーは登録されていません」と表示されしまいます。なにが操作上足りないものがあったのでしょうか。
- ベストアンサー
VBAでプログレスバーコントロールを使いたい
excelVBAのコードが終了するのに約1分30秒程かかります。この間進捗商況をある程度表示するものがあったらいいのにと思いました。 ネットで検索しますと 「VBAでプログレスバーコントロールを利用する。」 という説明がありました。それを参考に、やっとツールボックスのアイコンの中に「prgressBar」を追加することができました。 つぎに userForm1 userForm の 全体 項目別 の下欄 (オブジェクト名) userForm1 caption データ読み込み中 としました。右側に 「データー読み込み中」の表題のホームが表示されました。 次にツールボックスからコマンドボタンをホーム上にドラッグし「実行」と名前をつけました、 次にツールボックスから「progressbor」のアイコンをホーム上にドラッグすると 「ライブラリーは登録されていません」 と表示されしまいます。なにが操作上足りないものがあったのでしょうか。何方か教えて頂けませんか。 お願いします。
- diwk85
- お礼率83% (141/168)
- Excel(エクセル)
- 回答数5
- ありがとう数3
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>「ライブラリーは登録されていません。」と表示されてしまいます。 >なぜなのかわかりません。「ライブラリーに登録」とはどのような扱いをすればいいのでしょうか? >度重なる質問申し訳ありません。お願いいたします。 プログレスバーを使用するためのコントロール群が正常にWindowsに登録されていないことによるエラーかと思います。 前述までの方法はコントロールをレジストリに再登録する方法なのですが、office2013のbit数はOSと同じ64bitを使っていますか?32bitのoffice2013でしょうか。 C:\Program Files\Microsoft Office 15\root\vfs\SystemX86 上記フォルダの中に下記のファイルが有れば、 MSCOMCTL.OCX 上記ファイルをコピーして、「C:\Widnows\SysWOW64」のフォルダに張り付け(上書き保存)てください。 再度No1、3の通り、「管理者権限で実行」したコマンドプロンプトより regsvr32 c:\Windows\SysWOW64\MSCOMCTL.OCX 上記コマンドをコピーして貼り付けたのちにEnterで実行してください。 以下参考: http://rurutialot.hotcom-cafe.com/wordpress/vba%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E9%85%8D%E7%BD%AE%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%8C%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AF/ https://social.msdn.microsoft.com/Forums/ja-JP/283b4973-f6f7-47e1-a573-1b70b07d2742/listviewuserform
その他の回答 (4)
- eden3616
- ベストアンサー率65% (267/405)
No3ですが、すいません文章が抜けておりましたので補足します。 regsvr32 c:\Windows\SysWOW64\MSCOMCTL.OCX 上記パスの「r」から、「X」までを選択 ↓ 上記パスの「r」から、「X」までを選択して右クリックから「コピー」を選択
お礼
ありがとうございます。 コピーしました。その結果 Regsvr32 c:¥windows¥syswow64¥mscomctl.ocx Dllreqisterserverは成功しました。 ok とでました。 次に、マクロのコードを表示させて、ここにユーザーホームを表示させるとコントロールボックスも表示されました。このコントロールボックスからコマンドボタンをホームに移動させました。次にprogresbarを移動させると 「ライブラリーは登録されていません。」と表示されてしまいます。 なぜなのかわかりません。「ライブラリーに登録」とはどのような扱いをすればいいのでしょうか? 度重なる質問申し訳ありません。お願いいたします。
- eden3616
- ベストアンサー率65% (267/405)
>OSはWindows10 64bit excel2013 です。 64bit でしたら、No1のパスになります。 regsvr32 c:\Windows\SysWOW64\MSCOMCTL.OCX 上記パスの「r」から、「X」までを選択 管理者権限で実行したコマンドプロンプトを開くと以下のようになります。 C:\Windows\system32> コマンドプロンプトの画面を「右クリック→貼り付け」を選択してから「Enter」キーを押してください。 >ファイル名、デレクトリ名、またはボリュームラベルの構文が間違いです。」 「regsvr32」と「C:/~.OCX」の間には半角スペース「 」が必要です。 また大文字小文字に区別はありませんが、上記の通り入力ではなくコピー貼り付けで行ってみてください。 >調べてみると「¥」で表示されていても内容は逆スラッシュの意味だとのことでしたので Windowsではバックスラッシュは円記号で表示されてしまいますが、同じ意味です。 コマンドプロンプトでバックスラッシュは円記号で表示されますので、そのままで問題ありません。 キーボードでいうと「右側のShft」キーの左隣にある「ろ」と書かれているキーになります。
- eden3616
- ベストアンサー率65% (267/405)
No1に補足です。 No1は64bitOSの場合のコマンドになります。 32bitOSであれば以下のコマンドをコマンドプロンプトで実行してみてください。 Regsvr32 "C:\Windows\System32\MSCOMCTL.OCX" ▼OSのbit数を確認する方法 http://faq.ricoh.jp/app/answers/detail/a_id/58/~/%E3%83%91%E3%82%BD%E3%82%B3%E3%83%B3%E3%81%AE-os-%E3%81%A8%E3%83%93%E3%83%83%E3%83%88%E6%95%B0%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95-(windows-8%2F7%2Fvista%2Fxp)
お礼
早速のご回答ありがとうございました。 最低限の環境の説明をしなくして、質問ばかり慌てて投稿しました、申し訳けありません。 OSはWindows10 64bit excel2013 です。 挑戦してみましたが、今回の問題は私には少し早すぎたレベルで難しいと思いました。 まず、恥ずかしいのですが、逆スラッシュの出し方がわからず、ネットで調べてからととりかかる有様です。 調べてみると「¥」で表示されていても内容は逆スラッシュの意味だとのことでしたので、コマンドプロンプトン 右クリックで「管理者として実行」を選択しまし開くプロンプトン画面には逆スラッシュの部分は「¥」を すべて入力したコマンドをいれEnterを押すと「ファイル名、デレクトリ名、またはボリュームラベルの構文が間違いです。」とでます。 ------------------------------------------- ネットで 「半角の逆スラッシュ入力」の手順により「フォント名」欄を」Arial]にしてみましたが「¥」 の表示しかでませんでした。 ------------------------------------------------------ 以上、 せっかく教えて頂きながら結果を出すことができませんでした。 =========================== しかし、まったく理解できないことが発生しました。 「regsvr32c:\Windows\SysWOW64\MSCOMCTL.OCX」 上記のように、立派に逆スラッシュの入ったコードがこのお礼文を書いているときできました。ので早速 元に戻り、コマンドプロンプトンにコマンドを入れようとすると、やはり「¥」でしか入りませんでした。 ネットにありました,半角の逆スラッシュを引く手順の「フォント名」を「Arial」に変えてみましたがその時は「¥」しか表示しませんでした、なにかのタイミングで表示できるようになっているようです。 最後にこのお礼文の「確認する」に進むと、上記コマンドの逆スラッシュがすべて「¥」に変わっていましたので 説明上,上記のコマンドは、記号の「逆スラッシュ」をつかっております。 以上なにを説明しているのかと思われとおもいますがお許し下さい。 ありがとうござしました。今後ともよろしくお願いいたします。
- eden3616
- ベストアンサー率65% (267/405)
OS(Windows7/8/8.1/10)及びビット数(32bit/964bit)やofficeのバージョン(office2007、2010)などは最低限記載してください。 「スタート>全てのプログラム>アクセサリ>コマンドプロンプト」を 右クリックして管理者権限で実行を選択してください。 プロンプト画面に以下のコマンドを入れて実行してみてください。 regsvr32 c:\Windows\SysWOW64\MSCOMCTL.OCX
関連するQ&A
- エクセル2003 プログレスバー
エクセル2003を使用しています。VBEでプログレスバーコントロールで進捗状況を表示するためユーザーフォームのツールボックスにProgressBarを追加しようと「ツール」メニューを開きましたが「その他コントロール」がありませんでした。ProgressBarを追加できないのでしょうか?それとも他に方法があるのでしょうか? よろしくお願いします。
- 締切済み
- その他([技術者向] コンピューター)
- VBAについて
VBAに関する質問です。MsgBoxにテキストボックスを埋め込むことは可能ですか? もし可能であればやり方を教えてください。 UserFormでテキストボックスを埋め込むやり方はわかるのですが、 その際インフォメーションアイコンを表示することができません。 もしそのやり方をご存知であれば教えてください。 よろしくお願いします。
- 締切済み
- Visual Basic
- エクセルVBA ユーザーフォームの表示内容を選択条件によって変更する
ExcelVBA初心者です。 ユーザーフォーム1でsheet1を選択した場合→次のユーザーフォーム2ではsheet1の内容を、 sheet2を選択した場合→sheet2の、sheet3を選択した場合→sheet3の 内容をそれぞれキャプションとして表示したいのですが、 なかなか上手く出来ません。 Private Sub UserForm_Initialize() If UserForm1.ComboBox1 = Worksheets("Sheet1").Select Then UserForm2.Caption = Worksheets("Sheet1").Range("B3").Value ElseIf UserForm1.ComboBox1 = Worksheets("Sheet2").Select Then UserForm2.Caption = Worksheets("Sheet2").Range("B3").Value Else UserForm1.ComboBox1 = Worksheets("Sheet3").Select UserForm2.Caption = Worksheets("Sheet3").Range("B3").Value End If End Sub としてみたのですが、どのシートを選択してもsheet3の内容が ユーザーフォーム2のキャプションとして表示されてしまいます。 どのようにしたら良いでしょうか? よろしくお願い致します。
- ベストアンサー
- Visual Basic
- エクセルVBA
どうしても解らないため,ご教授ください. いま,ユーザーフォームAとBがありAで主にプログラムを走らせます.BはAで 処理している内容(ファイル名)を表示させるだけです. そこで以下のようなプログラムを組んだのですが,リアルタイムに更新されず真っ白な ままになってしまいます.フォームBに変数を渡して行おうとしましたがこれもうまく 行かず,今はフォームAからBを操作しています. ラベルを使用していますがテキストボックスでもリストボックスでも 同様なことが起こってしまいます.何が悪いのかさっぱり解りません よろしくお願いいたします. buf = openfilename & "処理中" If ic > 1 Then buf = UserForm2.Label1.Caption & vbCr & buf End If UserForm2.Label1.Caption = buf
- ベストアンサー
- Visual Basic
- Access VBA
AccessとWordの連携について教えてください。 フォーム[会社データ]上に「cmd実行」ボタンを配置しています。 行いたいのは次の作業です。 上記「cmd実行」ボタンのクリックによりWordを起動(新規文書)し,フォームに表示しているレコードから[会社名]テキストボックスのデータを2行目のセンターに,[担当者]テキストボックスのデータを4行目の左端にそれぞれ出力する。 AccessのVBAで[ツール][参照設定]で[Microsoft Word Object Library]を選択済みです。 どなたかご教授いただければと思います。何とぞよろしくお願いいたします。 なお,AccessのVBAで[ツール][参照設定]で[Microsoft Word Object Library]を選択済みです。
- ベストアンサー
- オフィス系ソフト
- 【UserFormラベルに状況を随時表示したい】
ExcelVBAでUserFormを使用した4画面ばかりのツールを作成中です。 質問ですが、あるコマンドボタンを押下した時に、既存のExcelファイルを複数開き、集計などを行い、結果をCSVファイルに出力するという処理を行っています。 処理には、10分位の時間を要するので、その間は、UserFormに「現在処理中のファイル名、処理が終了したファイル名」などの進捗をラベルに表示したいのですが、実際に実行してみると、Excelファイルを開いた時点で、制御がExcelファイル側に入ってしまい、UserFormが真っ白に表示されてしまいます。 常に、「UserForm」をアクティブにし、目的の進捗状況ラベルに表示しながら、集計処理を実行することはできるのでしょうか? どなたかご存知の方、教えてください!!
- ベストアンサー
- Visual Basic
- エクセルのuserformに自動入力したい
こんにちわ! 最近userformを使い始めたのですが、エクセル上にあるデータをuserformを開いた際に自動で読み込むことは可能でしょうか? 例えば、 userformを開いた時点でラベルや、テキストボックスをクリックをせずとも自動でエクセル上のA1に入力されているデータをcaptionに読みこみたいです。 アドバイスの程よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルでフォームのキャプションを取得したいのですが・・・
ユーザーフォーム1と2、二つのフォームがあります。 ユーザーフォーム1にテキストボックスが5つあったとして それぞれのテキストボックスにエンターしたときに ユーザーフォーム2を表示させるのですが、 そのときにテキストボックスのControlTipTextを ユーザーフォーム2のCaptionとして表示するには どうすればよいのでしょうか。 Private Sub UserForm_Initialize()で UserForm2.Caption = UserForm1.ActiveControl.ControlTipText としてみましたがだめでした。 例えばフォーム1上のテキストボックス1のControlTipTextが "AAAAA"だとして、テキストボックス1が選択されたとき(Enter)、 表示されたフォーム2のタイトルバーはAAAAAと表示。 同じ要領でテキストボックス2の場合はテキストボックス2の ControlTipTextを表示させる。 取り急ぎ乱文ですが宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAのデータ抽出について
列 A B C 行1 番号 色 形 2 1 白 丸 3 2 赤 三角 4 1 赤 丸 5 3 黄 四角 (1)Excel Sheet1にコマンドボタン1があり、それをクリックするとUserForm1が表示されます。 (2)UserForm1には「番号」「色」「形」の各コンボボックス1,2,3が配置されています。 (3)各コンボボックス1,2,3に表示されるのは、Sheet1の各列のデータです。 (4)コンボボックス1,2,3のうち1つ選択→その条件に合うデータを抽出。 コンボボックス1,2,3のうち2つ選択→その2つの条件に合うデータを抽出。 コンボボックス1,2,3のうち3つ選択→その3つの条件にあるデータを抽出。 (5)Sheet1のコマンドボタン2をクリックすると、Sheet1は元のデータ一覧に戻る。 というようなプログラムを組みたいと思っています。 (4)のデータ抽出、(5)の戻し方がよくわかりません。 どなたかご教授下さい。
- ベストアンサー
- Visual Basic
- excel VBA プログレスバーについて(初心者)
VBA初心者の質問です… excelで入力されている値を用いて、グラフ作成する簡単なデータを作りました。 特に問題なくグラフは出来たのですが、グラフ作成が1つではなく数個同時(順番)に作成しているため時間が掛かってしまいます。 この処理中にプログレスバーを表示出来ればと思い質問を致します。 私なりに調べ(goo内)下記サンプルを発見し、簡単なのでこれを使をうかと思うのですが、UserForm1の処理前にUserForm2.showだけでは UserForm2の処理が終わらないと処理をしません…当然ですよね… 本当に初心者で申し訳ないのですが、UserForm1の処理最中にUserform2のプログレスバーを表示するのにはどうすればいいのでしょうか… 【サンプル】 Private Sub UserForm_Activate() With Label1 .SpecialEffect = 2 .BackColor = vbBlue www = .Width .Width = 0 End With For i = 1 To 1000 Me.Caption = i Label1.Width = i / 1000 * www Me.Repaint Next End Sub また他におすすめなやり方があれば教えて頂ければ… 初心者な質問で申し訳御座いません。
- ベストアンサー
- Visual Basic
お礼
ありがとうございました。 教えて頂いたとうり進めましたら見事に、ライブラリーに登録できました。 これからまたかなり困難な作業がありそうですが挑戦したいとおもいます。 今回は大変お世話になりました。ありがとうございました。 今後ともよろしくお願いいたします。