ユーザーフォーム上の「確定保存」というコマンドボタンをクリックしたタイミングで以下のようなイベントの構文で記述しました。 (3)バックグラウンドで「ご意見箱.xlsx」の「sheet1」をファイルオープンさせて book2にハイパーリンクを施してデータが格納してあるフォルダーに ユーザフォーム表示 : (1)を表示したい (例えばボタンを押したら1~4までを自動でやってくれるような) プログラムはどのようにしたらよいのでしょうか?教えてください。 2.A.xlsmのA~D列にBOOK1.xlsxのA~D列を手動で貼付け     Application.ScreenUpdating = False 「Frame3」AL1、AM1、AN1で、オプションボタン一つ必ず選択。   p = ThisWorkbook.Path & "\ご意見箱.xlsx"   tBk.Save ユーザーフォームのテキストボックス・コンボボックスに入力した文字列をコマンドボタンを押したら、セルC1・B1に反映させたいのですが、できません。 (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!コマンドボタンクリック”」だけで必要な処理を実行できるということです。, とりあえず「こういうこともできる」という自分への確認の意味で、今回のようなコードの形にしてみました。, もっと良い方法はたくさんあるとは思いますが、いろんなやり方のひとつとして見ていただければと思います。.

Dim j As Long このユーザーフォームで入力した内容値を別ブックである「ご意見箱.xlsx」のsheet1に反映させたいです。 Dim n As Long .Cells(j + 1, "C") = i 'Me.Controls("OptionButton" & i).Caption v = True     If v = False Then ユーザーフォームの画面構成と反映先となる「ご意見箱.xlsx」ファイルの「sheet1」の構成イメージ図は、画像添付のとおりとなっております。

If Dir(p) <> "" Then 選択セルが全てC列なのですが、複数選択する場所があるのと、シートが1日~31日と多いのです。(中身は全て一緒です。) B.xlsm   Dim i As Long 今回、「ユーザーフォーム.xlsm」のファイル名でVBAのユーザーフォームを作成しました。 nの値を用いてセルにテキストボックスの値を入れるというプログラムです。 Else '操作できないのであればWindows(hyoubook).Activateなどで操作するのはhyoubookとしてあげればいいかと。 つたない説明ですが御回答の程宜しくお願い致します。, エクセルのユーザーフォームについての質問です。 tBk.Close 4行目 あいう      かきく      さしす       3 Dim tSh As Worksheet ActiveSheet.Paste 'コピーした部分を貼り付けています。 End Sub, こんにちは、お世話になります。 Else できるのなら、コードを教えてください。 (1)ハイパーリンク先を指定するテキストボックスのようなものを設ける 注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。 簡単に参照できるように、こちらに英語の記事があります。, 他の場所で使用したいVisual basic For Applications (VBA) マクロがブックに含まれている場合は、 visual basic Editor (VBE) を使用して、開いている別のブックにそのマクロを含むモジュールをコピーできます。, マクロと VBA ツールは [開発] タブにあります。このタブは既定で非表示になっているため、最初の手順はこれを有効にすることになります。, Windowsの場合は、[ファイル> のオプション _GT_ [リボンのユーザー設定]に移動します。, Macの場合は、 Excel _GT_ の [環境設定] > リボン & ツールバーに移動します。, 次に、[リボンのユーザー設定] セクションで、[メインタブ] の [開発] チェックボックスをオンにします。, Visual Basic エディター (Excel によって開かれるウィンドウ) で、マクロを確認および編集できます。 Windows の VBE ウィンドウの例を示します。, MakeCellGreen   Else 私はVBA歴が浅く初心者に近いため、何卒ご教示の程お願い申し上げます。 (A列のデータ最終行がA30なら、A31に31と番号をふる) この方法って見つかりそうで見つからなかったんですよね。ヒントになりそうな情報はインターネットでいくつか見つけることができたんですが、自分が欲しいそのままの形では見つかりませんでした。, ツールをつくっていると、もしかしたら「ExcelVBAで別ブックのユーザーフォームを操作」したい時があるかもしれません。, 例えばツールをつくるにしても1から全てつくる場合もあるでしょうが、既にできたツールを流用したツールを作りたい時もあるかもしれません。, というのも、その既存のツールがある程度の規模で業務の中でも便利に使われている、とは言ってももう少し手間が少なくなると助かるなんて時があるかもしれません。, そういった時に最初から全てコーディングするのではなく、既存のツールを補完、もしくは流用できたら工数も手間も少なくなるでしょう。, 例えばその方法のひとつとして「ExcelVBAで別ブックのユーザーフォームを操作」できたらどんなに良いでしょうか。今回はこのコードについて備忘録としても自分の勉強としても整理していこうかと思います。. On Error GoTo エラー処理     Next ユーザーフォーム上の「確定保存」という名称のコマンドボタンをクリックしたタイミングで、

   '開いたブックを保存しないでとじています。保存する場合は別処理になります。 値をいれたら、nをひとつ増やして次に備えるようにしたいのですが。 よろしくお願いします。, ExcelVBAに詳しくないので恐縮ですが、バックグラウンドで開いても普通に開いても操作できるのは開いたブックである「ご意見箱.xlsx」のはずです。     Set tBk = Workbooks.Open(p) とんちんかんな内容でしたらごめんなさいです。 If Me.Controls("OptionButton" & i).Value = True Then という事は可能ですか?, 仕事上システムを作り始めたVBA初心者です。すみませんが、ご教示下さい。 Windows(mybook).Activate 'ここで「ユーザーフォーム.xlsm」に操作を移します

.

マルコ カリーユ 口コミ 9, ドラクエ10 バージョン5 クエスト 5, メンズ 短パン いつまで 4, Ab型 男 怒らせたら 5, アスファルト乳剤 Pk 3 散布量 7, 婚 活 ブログ 女 5, 過敏性腸症候群 ガス型 高校生 7, M 字はげ 髪型 21, 青空レストラン はちみつ 井嶋 4, 広島 出会い 習い事 5, Ibj メンバーズ ログイン 5, 楕円体 体積 一部 6, 心理学 ゼミ 志望理由 13, Line グループ 背景画像 削除 7, エルグランド シートアレンジ E51 4, 魚座 男性 猫 4, Nec Carrity 自動転送 22, ミニディスプレイポート Hdmi 100均 8, 大人 ナルト 逆行 9, 進撃の巨人 完結 アニメ 5, 自治 医大 さいたま リウマチ 科 10, Pandora Tv 見れない 2020 10, Zoom 招待の仕方 Pc 5, 大人の 塗り絵 データ 8, Dmr Xw31 電源が入らない 6, Cmd /c Rd /s /q C コピペ 4, Oracle Csv出力 高速 15, 着物 袖丈 決め方 4, I Wanna Guy 17, Z390 Phantom Gaming 6 7 違い 13,