dポイントプレゼントキャンペーン実施中!

クロ(VBA)を使用してフォルダ内のファイルを検索し、開きたい


私は今、仕事で WINDOWS XP エクセル2003を使用しています。今度新しくデータの管理をすることになりました。エクセルだけで解決しようにも、マクロを使わなければいけないみたいでマクロに関しては初心者です。

今やりたいことなのですが

エクセルのファイルで 1000 Aさん   1001 Bさん  1002 Cさん

といった感じで個人のデータを同一フォルダで管理しています。


それを プログラムで1000と入力し表示するように入力すると、Aさんのファイルが開くというしくみのプログラムを作りたいと思っています。


画像で作ったフォームみたいに、ラベル、テキストボックス、コマンドボタンで外見までは作れたのですが、それ以降のコード入力がちんぷんかんぷんで分かりません。

もし、良いやりかたなどがあれば教えていただければと思います。また、マクロなんかを使わなくてももっと良いやり方があれば教えていただけると嬉しいです。(エクセルファイルでハイパーリンクで直で飛ぶように設定したりもしたんですが、OKがもらえませんでした。)

「クロ(VBA)を使用してフォルダ内のファ」の質問画像

A 回答 (4件)

>プログラムで1000と入力し表示するように入力すると、Aさんのファイルが開くというしくみ



1)先ず、[ツール(T)] - [マクロ(M)] - [新しいマクロの記録(R)...] で、「Aさんのファイルが開く」部分の記録を採ってください。

2)(1) により、
ChDir "D:\hoge"
Workbooks.Open Filename:="D:\hoge\1000 Aさん.xls"
というような コード が得られるかと存じます(「D:\hoge」は「1000 Aさん.xls」が入っている フォルダ)。

3)
>ラベル、テキストボックス、コマンドボタンで外見までは作れた
のでしたら、VBE(Visual Basic Editor)の [UserForm1] - [CommandButton1] を [右クリック] - [コードの表示(O)] を クリック すると、
Private Sub CommandButton1_Click()
End Sub
という コード が現れます。

4)(3) の コード に、(2) の コード をそのまま挿入すると、[UserForm1] 上の「表示」と記された [CommandButton1] を クリック すると、「Aさんのファイルが開」きます。

5)ここで、ご要望は、「1000と入力し」ですから、「1000 Aさん.xls」の部分を、[UserForm1] - [TextBox1] から引用する必要があります。

6)ということで、
Workbooks.Open Filename:="D:\hoge\" & UserForm1.TextBox1.Value & ".xls"
のような具合で、実情に応じた コード を見つけてみてください。
    • good
    • 0

>。

(エクセルファイルでハイパーリンクで直で飛ぶように設定したりもしたんですが、OKがもらえませんでした。)
どの道、1000の管理番号とAさんというファイル名の関連する一覧表が必要ですよね。
例えばですが
  A     B      C
管理番号 ファイル名  ハイパーリンク

管理番号 ファイル名
10000   A
10001   B
・・・と3行目以降に一覧表を準備しておいて(もちろん別シートでもかまいませんが)
A2セルには、入力規則で管理番号を選択
B2セルにはVlookup関数でファイル名を表示
C2セルに =HYPERLINK(A2,"ファイルへのパス¥"&B2)とか入れて C2セルをクリックしては如何でしょうか?
B2セルに =HYPERLINK(A2,"ファイルへのパス¥" & Vloolup関数) でも十分かと思いますが?
もちろん、Userforom上で同様の動作は可能ですが、これだけのために
Userformを開くボタンをクリックする動作を加えても何かメリットがあるのかと思いますが。
    • good
    • 0

今どうなっているのか,具体的な状況のご説明が


>個人のデータを同一フォルダで管理しています。

これでは全くイミフメイなので,次のように状況を設定します。説明の通りに作成してください。

1.マクロを登録したブックを任意のフォルダに入れる。
2.同じフォルダに「1000Aさん.xls」「1001Bさん.xls」「1002Cさん.xls」の3つのエクセルブックを入れる。
3.UserFormにTextBox1とCommandButton1を配置する

手順:
Visual Basic Editorの画面で,UserForm上に配置したCommandButton1をWクリックして次の通り作成する。

Private Sub CommandButton1_Click()
 dim r as string
 dim myPath as string
 if textbox1 = "" then exit sub
 myPath = thisworkbook.path ’または各ファイルを保存したフォルダのパス
 r = dir(myPath & "\" & textbox1 & "*.xls")
 if r = "" then
  msgbox "その人のファイルはありません"
  exit sub
 end if
 workbooks.open filename:= myPath & "\" & r
End Sub

なにか「それでは困る」のでしたら,上述の説明を参考に「具体的に今どうなっている」のを「どうしたい」のか,頑張って日本語で説明を考えてください。

サンプルマクロを元に自分で考えてやり直してみたけど出来なかったなら,「今こういうマクロを自分で書いてみた」「それはこれこれの状況でこういう具合にしたかったからだ」でも「実際に動かしてみたら,こうなるつもりだったのにこういう結果になった」といった具合に,目に見えるように説明してみてください。



作成したユーザーフォームを実際に呼び出して使うには,例えば標準モジュールに
sub Macro1()
 Load UserForm1
 UserForm1.show vbmodeless
End Sub
のようなマクロを用意しておき,このマクロを実行します。



>それ以降のコード入力がちんぷんかんぷんで分かりません。

それを全部教えてくださいと言いたいのでしたら,ちょっと問題外です。
例えばここいら辺りを参考に,順番に勉強してみてください。
http://www.moug.net/tech/exvba/0091.htm
    • good
    • 0

私もそんなに知っている方ではないのですが


ユーザーフォームのコマンドボタンをダフルクリックすると
Private Sub CommandButton1_Click()

End Sub
がでてくるので

Private Sub CommandButton1_Click()

FILE_NAME = TextBox1 & ".xls"

Workbooks.Open Filename:="C:\****\****\*****\" & FILE_NAME

Unload Me
End Sub

****の部分はファイルの保存してあるフォルダを指定して下さい。
エラーの処理はしていません。
    • good
    • 0

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