(adsbygoogle = window.adsbygoogle || []).push({}); 上記のコードを順番に解説していきます。ちなみに自分がこのコードを確認した環境は「Excel2013」です。, まず前提としては、デスクトップ上に「AAA」エクセルファイルと「BBB」エクセルファイルの2つのブックがあるとします。, 上記のコードは「BBB」エクセルファイルの標準モジュールに記述しており、「BBB」エクセルファイルから「AAA」エクセルファイルにあるフォームモジュールの「UserFormA」を操作するというものです。, まず、上記のコードの2行目で「AAA」エクセルファイルのパス格納用の変数pを宣言、3行目で「AAA」エクセルファイルを格納するためのオブジェクト変数wbを宣言します。, 5行目の「p = “C:\Users\user\Desktop\AAA.xlsm”」で変数pに「AAA」エクセルファイルがある場所のパスを格納します。, 6行目の「Set wb = Workbooks.Open(p)」で「AAA」エクセルファイルを開いて、それをオブジェクト変数wbに格納します。, 8行目の「wb.VBProject.VBComponents(“UserFormA”).Designer.Controls(“textbox1”).Value = “テスト”」では、まず「AAA」エクセルファイルのVBProjectオブジェクトを操作します。, 「VBProject.VBComponents」というコードですが、このコードを使用すると場合によっては「Visual Basic~信頼性に~」といったエラーが出てしまうときがあるかと思います。, このような時は、エクセルを開いた画面からファイルタブを選択、そこから、オプション→セキュリティセンター→セキュリティセンターの設定→マクロの設定まで進みます。, その画面の開発者向けのマクロ設定の項目で「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する(V)」にチェックを入れます。これで「VBProject.VBComponents」を使う場合のエラーは出なくなるかと思います。, このVBProjectオブジェクトは一般的には「VBEを操作する」という風に言われたりしますが、VBEの画面の左上にあるプロジェクトエクスプローラの部分を見るとわかりやすいかと思います。, 「VBAProject(~)」とか「フォームモジュール」「シートモジュール」「標準モジュール」などがあるところです。この部分を操作すると考えるとイメージしやすいのではないでしょうか。, 「VBProject」はそのエクセルファイルにある各モジュールがまとめられている所で、VBComponentsでその中の構成要素の一つ(例えば標準モジュールとかフォームモジュール)を取得できるというイメージになるかと思います。, 次の「Designer」というコードですが、インターネットで調べても詳しく書いてある所をなかなか見つけられなくて、VBEのオブジェクトブラウザで調べた所、次のように表示されました。, 「IHTMLEditDesigner」をインターネットで調べてみてもイマイチよくわからなくて「MSHTML」を調べてみたら「Trident」について多く表示されました。ちなみにWikipediaには以下のように書かれています。, Trident (トライデント)は Internet Explorer に搭載されている HTML レンダリング エンジンの名称で、ライブラリ ファイルの名称から MSHTML とも呼ばれている。, Internet Explorer 4.0 より導入されたもので、Windows 向けではアップデートを重ねているが、Macintosh 向けの Internet Explorer for Mac は次のバージョンの 5.0 で Tasman に置き換えられた。Internet Explorer 7 とそれ以降に含まれるバージョンではウェブ標準に準拠するように開発されている。, Trident はソフトウェア開発者が自分のソフトウェアにウェブ ブラウズ機能を容易に追加できるよう、ソフトウェア コンポーネントとして設計されている。, う~ん・・・。これも難しくてよくわかりませんが、Webページをつくるための道具、といった感じでしょうか。, いろいろと試行錯誤してみましたが、とにかくこの「Designer」という部分がないと他のブックのユーザーフォームのコントロールは操作できませんでした。, この後の「.Controls(“textbox1”).Value = “テスト”」はUserFormAフォームモジュールに設定されているtextbox1というオブジェクト名のテキストボックスに「テスト」という値を入れる、という意味になります。, 「Designer」の後に「.Controls(“textbox1”).Value = “テスト”」と繋げないとテキストボックスを操作できません。, 「MsgBox wb.VBProject.VBComponents(“UserFormA”).Designer.Controls(“CommandButton1”).Caption」ですが、「AAA」エクセルファイル内にあるUserFormAの中のコマンドボタンに表示されているキャプションをメッセージボックスで表示するというものです。, 11行目の「Application.Run “AAA.xlsm!フォームを開く”」は、「AAA」エクセルファイル内にあるUserFormAを表示するマクロを実行するというものです。, 「Application.Run」を使うことで別ブックのマクロを実行することができます。ポイントとしては、”(ダブルクォーテーション)で囲む必要があるということです。, 「フォームを開く」というのは、「AAA」エクセルファイル内にあるフォームを開くためのプロシージャ名です。実際にフォームを表示させるには、この中に「UserFormA.Show」といったように別途コードを入れておく必要があります。, 12行目の「Application.Run “AAA.xlsm!コマンドボタンクリック”」は次の項の操作先ファイルのコードで説明しますが、「AAA」エクセルファイルで開いたフォームに設置したコマンドボタンのクリックイベントを実行するコードです。, 以上が「ExcelVBAで別ブックのユーザーフォームを操作する方法」のコードの操作元ファイルで必要なコードの説明になります。, 先程書いたのが操作元ファイル(BBB.xlsm)のコードで、ここでは操作先ファイル(AAA.xlsm)のコードの説明に入ります。結論としては以下のコードが必要になります。, 標準モジュールの「コマンドボタンクリック」プロシージャでフォームモジュールのCommandButton1_Clickの処理を実行するという流れです。フォームモジュールに入力したコードでポイントがひとつあります。, 1行目、「Sub CommandButton1_Click()」のSubの前に「Private」を入れると「コマンドボタンクリック」プロシージャでCallしても受け付けてくれません。, フォームモジュールでコマンドボタンなどのコントロールを設置すると、基本的にはPrivateが入ったクリックイベントのコードが自動で作成されてしまいます。ですので、標準モジュールからのCallで動作させられるように忘れずに削除する必要があります。, なぜこのような順番にしたかというと、操作元ファイルからのクリックイベントは直接は操作できなかったからです。例えば次のようなコードだと動作しません。, Application.Runは基本的には「マクロ」じゃないと動作しないようなので、Excelからするとクリックイベントは違うという認識なのでしょう。, 以上のことから、フォームモジュールの「MsgBox “メッセージ”」の部分を適宜必要な処理を実行できるコードに変更すれば「ExcelVBAのDesignerで別ブックのユーザーフォームを操作する」ことができます。, 今回のコードを見つけるのはなかなか大変でした。Googleで他のエクセルファイルのユーザーフォームを操作する方法について検索してみても「Application Run~」という風に、他のエクセルファイルのマクロを実行するためのコードはたくさん見つけることは出来ます。, けれども、他のエクセルファイルにあるユーザーフォームを操作する方法はなかなか見つかりませんでした。どうすればこのコードを見つけられるか考えた所、エクセルの「オブジェクト構造」を考えれば良いかもしれないと思いました。, 例えばエクセルの特定のブックの特定のシートの特定のセルを参照するためには以下のようなコードを書くと思います。, Workbooks(“A”).WorkSheets(“B”).Range(“A1”).value, このように他のエクセルファイルも参照できるようなコードを書けば、そのファイルにあるユーザーフォームも操作できるはず、と考えました。, しかし現実は厳しいもので、例えば以下のコードのようにいろいろ試行錯誤はしてはみました。, Workbooks(p).UserForm1.Controls(“textbox1″).value=”テスト”, 上記のような感じのコードを手を変え品を変え延々と打ち込んではみたのですが、うんともすんとも言わず、画面には無常にも黄色のラインとエラーのメッセージが表示され続ける状態でした。, 「自分のイメージではなくて、ちゃんとしたエクセルのオブジェクト構造を確認するべき」だと考え直してインターネットで調べてはみたのですが、これもユーザーフォームを操作できる所まで書かれたものは見つけることが出来ませんでした。, あーでもないこーでもないといろいろとコードをいじっている内に、とある事に気づきます。「そういえば、VBEのプロジェクトエクスプローラの部分て階層構造っぽいな」と。, なぜここに気づいたかというと、今回の動作を実行するとなると二つのエクセルファイルのモジュールを見比べたり、行ったり来たりする必要があったので必然的にこの部分を見ていたからです。, ですから「VBAProject」とか、この部分のコードがあるんじゃないかと思いました。調べてみるとVBProjectとかVBComponentsというコードが見つかり、「おっ、これはいけるかもしれない!」と思ったのですが、また壁が立ちはだかります。, wb.VBProject.VBComponents(“UserFormA”).Controls(“textbox1”).Value = “テスト”, 何が足りないかというと「Designer」というコードです。今だからこれがあれば動作するとわかります。ですがこれに気づく前は、まさかこんなコードが必要だとは夢にも思っていなかったので偶然にもこのコードを見つけて動作した時は本当に驚きました。, 「これはいけるか?」と思ったらまた壁が立ちはだかります。長くなるのでここで割愛しますが、この後もSendkeysを使ったりPowerShellを試してみたり、そもそもフォームを表示させる必要があるのか?と考えたりもしました。, このブログでは自分がさせたい動作のコードを見つけるまでに四苦八苦してきたことをいろんな所で書いてきましたが、今回の件でAccessとかOutlookだけではなくてExcelでもオブジェクト構造の理解は必要なんだなと感じました。, 別に注意点というわけでもないのですが、今回のコードはユーザーフォームを表示しなくても必要な処理を実行出来ます。, つまり、今回使った「Application.Run “AAA.xlsm!フォームを開く”」でフォームを表示しなくても, 「Application.Run “AAA.xlsm!コマンドボタンクリック”」だけで必要な処理を実行できるということです。, とりあえず「こういうこともできる」という自分への確認の意味で、今回のようなコードの形にしてみました。, もっと良い方法はたくさんあるとは思いますが、いろんなやり方のひとつとして見ていただければと思います。.

テキストボックス1には「あいう」 Application.ScreenUpdating = True Else 4行目 あいう      かきく      さしす       3 If Me.TextBox = "" Then ~動作させたいフロー~

(2)ユーザーフォーム内のテキストボックスには2と表示される   If Me.TextBox1 = "" Then 3.B.xlsmでmacro2というマクロを実行(I1~K1に数値が出現、マクロでコピー状態)   If Dir(p) <> "" Then

    Application.ScreenUpdating = False 使用アプリケーション:Excel 2013です。

n = n + 1 (6)もしオプションボタンの未選択かテキストボックスの未入力があった場合は、警告メッセージを表示させる それと、このエクセルファイルを開き、マクロを有効にするのボタンを押すと思うのですが、そのときにすでにユーザフォームが表示されているようにしたいのですが・・・どうすればいいのでしょうか? Workbooks(datbook).Close

ActiveSheet.Paste 'コピーした部分を貼り付けています。    'この箇所の操作でa=Cells(Rows.Count, 1).End(xlUp).Rowとすると「ご意見箱.xlsx」の最終行が取得できています。

Next このテキストボックスに入力した内容をボタンを押すことでシート1のA1セルにコピーしたいのです。こんな簡単な感じなのですが、 いの一番に具体的で親身なアドバイスを下さり真に有難うございます。   Application.ScreenUpdating = True 反映させたいです。 Dim v As Boolean

選択項目が多いので、2ページで作りました。

「Frame7」BD1~BE1複数選択 如何せん私もVBA歴が浅いので、勉強になりました。 Application.DisplayAlerts = True '警告再表示 キャプションか番号か?

    For i = 1 To 3 'オプションが連番になっているとして、最終番号まで datbook = "ご意見箱.xlsx" End With 現状では、フローで云うところの(2)と(8)の部分は動作しているのですが、(3)~(7)の部分で動作しないため、つまづいている状況です。 誰かの疑問に誰かが答えることでQ&Aが出来上がり、後で見に来たたくさんの人の悩みの解決に役立てられています。 Excel(エクセル) - VBA ユーザーフォームの内容を別ブックに反映 「ユーザーフォーム.xlsm」のファイル名でVBAのユーザーフォームを作成しました。 このユーザーフォームで入力した内容値を.. 質 … (2)book2の特定のセルに(1)で記入したハイパーリンクを反映させる tBk.Save     Set tBk = Workbooks.Open(p)

↓ ここにComboBox7(日付)、ComboBox8(項目)、TextBox11(数値)を配置しています。コンボボックス やテキストボックスに入力があるとBook1.xlsmのSheet1にそれぞれComboBox7はA2、ComboBox8はB1、TextBox11はB2に入力されるようになっています。

.

上越市 コロナ 爆 14, しょこたん ポケモン パーティ 10, ゼッケン 名前 フォント 5, Windowsへようこそ 多く の可能性が あります 4, Acf Field For Contact Form 7 4, 使役受身 に できない 動詞 8, デスクトップ 時間割 壁紙 5, 前髪ぱっつん ロング 面長 4, 光触媒 効果 ない 4, 30アルファード リアドライブレコーダー 取り付け 11, Lakeel Messenger Pdf 5, Lost Song 1話 動画 5, Dtvターミナルサポート終了 見れ ない 58, Bg ドラマ 6話 28, Skyrim Se 美化mod 導入 8, スチール 溶接 半自動 16, 富士通 スマホ 5g 7, 潮 紗理菜 自己紹介 11, Amazon Linux Sshd 再起動 5, ワークマン 農作業 夏 5, 四角 を 囲む 12, メダカ 針子 ネット 52, 一人 親方 開業届 出して ない 7, 蛍光灯 製造中止 環境省 52, 松平健さん の 現在 39, 天王寺 ビール バー 4, 日野 トラック Cad 19, 食塩水 濃度 変わらない 5, Canon Mg6200 紙 詰まり 7, 夢咲きafter School 歌詞 パート 4, プレイバック 歌詞 意味 5, Docuworks Viewer Programは動作を停止しました 5, Poc Ventral Spin インプレ 14, マイクラ クイックチャージ コマンド 22, フォートナイト クリエイティブ ライトセーバー 7, 荒野行動 敵の位置 教える 11, Dell Diagnostics 音 8, 野球 ピッチャー スライダー投げ方 4, Bmw 内装 剥がれ 4, Cf Sx2 ドライバ Windows10 5, コンフィデンスマン 動画 Dailymotion 8, カブトムシ マット 再発酵 4, Campfire Audio Andromeda 2020 9, トレードステーション 終了 理由 35, エクストレイル ディーゼル チューニング 4, Dvd レンズクリーナー 読み込まない 4, シンク エンボス加工 吸盤 5, パナソニック ビデオカメラ Sdカード パソコン 5, Uqモバイル Cm 紀香 41, F 12d Sim サイズ 4, 犬 留守番 帰ってきたとき 4, マークローザ M7 2020 6, プロテイン 中学生 サッカー 6, コミコミ 5万 中古車 北海道 5, 松井大輔 自宅 場所 6, 不織布 立体マスク 作り方 9, ドラクエ アプリ バックグラウンド 12, Ff14 ミラプリ Il 17, ワンチェンジ ドラマ 最終回 40, ベネッセ コラショ 時計 説明書 10, 無限の住人 実写 ひどい 7, 時間割 作成 エクセル 5, 円柱 断 面積 斜め 13, 添え状 病院 ご清栄 30, Bmw 後部座席 Dvd 6, あつ森 ゆうたろう 高価なもの 41, ハイラックス リフトアップ ブロック 14, ディズニーランド キャスト 裏話 4, トラック ボンネット 名称 6, Sony 有機el A9g 9, 荒野 シーズン11 いつまで 4, Youtube コメ 欄 マーク 4, Closehandle メモリ リーク 7, ボルト 動画 ブログ 4, 豪徳寺 7sldk 物件 プール付き 30, スプラトゥーン2 初心者狩り 楽しい 32, Rails ガイド Has_one 6,