• 締切済み

フォーム上でVBAの編集するには?

AccessのVBA内を編集したいのですが、VBAを直接開かないで行うことはできますでしょうか? フォーム上から、置き換えのような形にしたいです。 例)フォーム上で、aaa.txt ⇒ bbb.txt と入力すると、VBA内の該当文字が置き換えできる。 そして、○文字変更されました。とメッセージを表示したい。 VBAのコードを教えていただけたらありがたいです。 よろしくお願いいたします。

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

興味もあったので、さわりだけやってみました(Access2007にて) 結構面倒そうです。 標準モジュール「Module1」のコードは以下で取得することは出来ました。 Dim sBuf As String With Application.VBE.ActiveVBProject.VBComponents("Module1").CodeModule   sBuf = .Lines(1, .CountOfLines)   Debug.Print sBuf End With VBAをいじるのは、「CodeModule」に用意されたメソッドで行うようです。 VBEの方のヘルプで「CodeModule」を検索してみてください。 文字列「aaa.txt」が何個あるか求めるには、いろいろやり方あると思いますが、 その中の1つ Dim sAry() As String sAry = Split(sBuf,"aaa.txt") でやった後、UBound(sAry) の値が、何個あるかになると思います。 ただこれにも難点があって、 「myaaa.txt」があっても配列になりカウントされるので、 sAry の前の配列の最後の文字が、文字列としての区切り文字でない場合には カウントを引いてやる処理は必要と思います。 (必要なら配列の先頭文字も) (Len(sBuf) - Len(Replace(sBuf,"aaa.txt",""))) / Len("aaa.txt") でも何個?がわかると思いますが、前後の文字は何?を確認できない分しんどそう。 「CodeModule」のメソッドに「ReplaceLine」があり、多分これを使うのかと思います。 (他のメソッドが良いのかは?) sAry = Split(sBuf,vbCrLf) とすると sAry は行毎の配列になるので、 その行に「aaa.txt」があるかないか(InStr で検索?)して(前後文字確認)、 あったら「bbb.txt」に置き換えて、それをメソッドを使って実際に置き換え・・・ 置き換えた回数を随時カウント・・・ ってなことを繰り返すのでしょうか。(未検証) やりたいことは、こんな感じで組み立てていけばできそうな気がします。 が、そもそものVBA記述を考えられたら良さそうな気もします。 "aaa.txt" を直に記述するのではなく、 引数(パラメータ)にしてみたり、 フォーム上のテキストボックスを参照させてみたり・・・ 余計なお世話・・・ということで 参考にする/しない等々、自己責任にてお願いします。

関連するQ&A

  • Accessで検索フォームを作成したいです。

    いつもお世話になっています。 Accessで検索フォームを作成したいのですが、webで調べてあてはめても上手くいきません。どうか、ご指導の程宜しくお願い致します。 (成分:テーブル) ID     成分 1    AAA 2     BBB 3     CCC 合計14レコードです。 (薬品と品番:テーブル) 薬品名    成分 あああ AAA いいい BBB えええ BBB あああ    CCC           合計200レコードです。 検索フォームを作成したいのですが、薬品名(例:「あああ」)を入力すると同じフォーム内で「AAA」「CCC」・・・とすべて一覧表示されるようにするにはどうしたらいいのでしょうか? Access初心者で、説明も物分りも悪いですがご指導の程宜しくお願い致します。 Access2002を使っています。

  • VBAのユーザーフォームの使い方

    皆様、こんにちは。 VBAのユーザーフォームを習い始めた初心者です。本の説明を読んでもユーザーフォームの使い方がよく分かりません。例えば、あるセールをクリックしたら、フォームが表示される、そしてフォームの中にあるコンボボックスのリストの中から選ばれた値が最初に選択したセールに入力されるという使い方がありえますか?申し可能でしたら、コード作成の例をいただけないでしょうか? どうぞよろしくお願いいたします。

  • Accessのフォームにて顧客番号を検索して無ければ新規作成したい

    Access2003のフォームで社員管理システムを作ろうとしていますが、VBAの記述でわからないことがあるので、教えてください。 まず、テキストボックス「txt_検索」に社員番号を入力し「cmd_検索」ボタンを押すと、社員管理テーブルの社員番号フィールドより検索をします。 社員管理テーブルに該当するレコードがある場合は、レコードの編集となり、社員番号がない場合はテキストボックス「txt_社員番号」に「txt_検索」の値を入れた新規レコードの作成としたいのです。 入力した値でレコードの検索をして、無いなら新規作成といったコードは どのような記述になるのか教えてください。 よろしくお願いいたします。

  • VBAエクセルのフォームについて

    お世話になっております。 VBAエクセルのフォームについて教えていただきたいのです。 VBAで入力のフォームを作ったのですが(TEXT BOXが4つ、コマンドボタン1つ、コマンドボタンを押したときに登録される用にしたい) 各シートの集計にしたい為、各シート(31のシートがあります)に入力フォームがあります、その各シートでの入力結果を1つのシートに 集計したいのですが、どの様なコードにしたらようか判りません。 素人のためお手数ですが、なるべく判りやすくお願いします。 よろしくお願いします。

  • Excel VBA サブディレクトリの取得について

    Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA  D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB         CCC.txt BBB\DDD        EEE.txt BBB\DDD        FFF.txt               GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。

  • Access2003でフォームが編集できません

    Access2003でフォームが編集できません 社内でaccess2003を利用しています。今まで何も考えずに使ってしましたが、フォームを少し編集したいと思いいじろうと思ったら、デザインビューが表示できないようになっていました。どこのメニューを見てもデザインビューがありません。ただVBEは開くことができます。 これを作った担当者は会社を辞めていて聞くこともできません。どこをいじったら編集することができるようになるでしょうか? ちなみにabc.mdbをクリックすると「このファイルを開きますか?」というメッセージが出て開くボタンをおすと即フォームが起動してきます。「テーブル」、「レポート」、「フォーム」、「クエリ」などのオブジェクトは表示されません。

  • VBA フォームに入力したものを検索しエクセルへ

    わたしはVBA初歩で現在勉強しているものです。 VBAでユーザフォームに検索窓を設置しました。 下記のことをできるようにしたいです。 (1)フォームの検索窓に文字を入力 (2)フォームのボタンを押す (3)googleで(1)の文字を検索(サイトはshowしなくてよい) (4)検索結果のすべてを   A列 番号   B列 タイトル   C列 URL というように順次流していく。 ↑このようなものを作りたいのですが、どのようなコード記述をすればよいでしょうか? 教えてください。 よろしくお願いいたします。

  • Excel VBAでユーザーフォームを編集不可にする方法

    Excel VBAでユーザーフォームを編集不可にする方法がわからなくて困っています。起動時に編集不可の状態にしておき、コマンドボタンを押したときに編集可能にするような方法を考えています。 Accessの場合は Me.AllowEdits = False などできるのですが、Excelではどうすればいいのか、どうか教えてください。

  • アクセスVBA フォームのスクロールバーを動かす。

    アクセスVBA フォームのスクロールバーを動かす。 作成したフォームの横スクロールバーポジションを、一番右端や左端にしてしまうことをVBA側でしたいのですが可能でしょうか? コードがわかりません。お願い致します。

  • アクセス(ACCESS)のリストボックスについて

    アクセスでフォームにテキストボックスとリストボックスを配置して、 テキストボックスに入力した文字列により、リストボックスに表示される データを変えたいのですが(フィルタをかけるというのでしょうか??) そこで、vbaを用い、リストボックスのプロパティの値集合ソースに SELECT * FROM aaa where aaa.bbb like "*あ*"; 'あ と言う文字のあいまい検索のつもり ”あ”はテキストボックス    に入力されている。 と入るような事を考えたのですが、ここで、aaaの部分がテーブルを基にした 場合は、該当するデータすべてが表示されますが、クエリーを基にすると 先頭のデータしか表示しないのです。 たぶん、素人の考えなのでしょうが、どうしてそうなるのかが分かりません。 教えていただけないでしょうか? できたら、クエリーを基にしても、該当データが表示できる方法も 教えてください。お願いします。 VBAは(?)かなりの初心者です。上記の方法も本に書いてあった物を やっと流用しました。猿にも解るくらいでお願いします。 ちなみに、アクセスは2000を使用しています。

専門家に質問してみよう