SSブログ

エクセル小僧:VBAでファイル選択ダイアログを開く [コンピューター]

9/23の記事では、ワークシート上のセルに、フルパスのファイル名を入力する必要があります。。それって、エクスプローラーを開いて、コピペして。。。
あ~めんどうくさい!!!

ということで、VBAでファイル選択ダイアログを開くことにします。

マクロは、こんな感じです。

【マクロ1】

01: Sub USOpFileNm1(myRange As String)
02:   ' 機能:『ファイルを開く』ダイアログを開き、引数で指定されたセルにファイル名を代入
03:   ' 【引数】
04:   ' myRange : ファイル名を代入するセルのRange
05:   Dim FileName1 As Variant
06:   'ファイルを開くダイアログを開く
07:   FileName1 = _
08:     Application.GetOpenFilename( _
09:       FileFilter:="テキストファイル(*.txt),*.txt" _
10:       , FilterIndex:=1 _
11:       , Title:="開けゴマ(" & myRange & ")" _
12:       , MultiSelect:=False _
13:     )
14:   If FileName1 <> False Then
15:     Range(myRange).Value = FileName1
16:   End If
17: End Sub

01行目: ファイル名を代入するセルのRangeを引数としています。
05行目: 変数定義です。
07-13行目: 『ファイルを開く』ダイアログを開き、FileName1に選択されたファイル名を代入します。
09行目: FileFilter:=で、選択できるファイルの種類をテキスト(txt)に限定しています。
11行目: ダイアログの上部に表示するタイトルを定義しています。
12行目: 選択できるファイルの数を1つにしています。
14-16行目: ファイルが選択されているとき、指定されたセルにファイル名(フルパス)を代入します。

[参考]
8.3 ファイル選択ダイアログを使う

名前を指定してブックを開く

【マクロ2】

01: Sub USOpFileNm1_1()
02:   ' 機能:『ファイルを開く』ダイアログを開き、Range("file1")のセルにファイル名を代入
03:   Call USOpFileNm1("file1")
04: End Sub

ワークシート上のボタンに登録するマクロを引数無しとするため、USOpFileNm1_1,
USOpFileNm1_2を定義しています。

【マクロ3】

01: Sub USOpFileNm1_2()
02:   ' 機能:『ファイルを開く』ダイアログを開き、Range("file2")のセルにファイル名を代入
03:   Call USOpFileNm1("file2")
04: End Sub

ワークシートは、こんな風になっています。

001.jpg

『比較』ボタンには、ファイル比較するためのマクロを割り当てます。
例えば、9/23の記事の"USDiff1"マクロです。

『file1』ボタンには、"USOpFileNm1_1"マクロを割り当てます。
『file2』ボタンには、"USOpFileNm1_2"マクロを割り当てます。

『file1』ボタンをクリックすると、こんな風になります。

002.jpg

雷が鳴ってきたので、今日は、この辺で。。[猫]



悲しい事件が三浦で。。

Nirvana - Come As You Are

ヤバイぜ!(5)  コメント(2)  トラックバック(1) 
共通テーマ:日記・雑感

ヤバイぜ! 5

コメント 2

cheese999

nice! ありがとうございます。
(^_0)ノ
by cheese999 (2012-09-25 21:45) 

cheese999

半角スペース+"_" は、1行に収まらない命令を、複数行に分割します。
(^_0)ノ
by cheese999 (2012-09-25 22:09) 

Facebook コメント

トラックバック 1

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。