エクセル小僧: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
ワークシートは、こんな風になっています。
『比較』ボタンには、ファイル比較するためのマクロを割り当てます。
例えば、9/23の記事の"USDiff1"マクロです。
『file1』ボタンには、"USOpFileNm1_1"マクロを割り当てます。
『file2』ボタンには、"USOpFileNm1_2"マクロを割り当てます。
『file1』ボタンをクリックすると、こんな風になります。
雷が鳴ってきたので、今日は、この辺で。。
悲しい事件が三浦で。。
Nirvana - Come As You Are
あ~めんどうくさい!!!
ということで、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
ワークシートは、こんな風になっています。
『比較』ボタンには、ファイル比較するためのマクロを割り当てます。
例えば、9/23の記事の"USDiff1"マクロです。
『file1』ボタンには、"USOpFileNm1_1"マクロを割り当てます。
『file2』ボタンには、"USOpFileNm1_2"マクロを割り当てます。
『file1』ボタンをクリックすると、こんな風になります。
雷が鳴ってきたので、今日は、この辺で。。
悲しい事件が三浦で。。
Nirvana - Come As You Are
nice! ありがとうございます。
(^_0)ノ
by cheese999 (2012-09-25 21:45)
半角スペース+"_" は、1行に収まらない命令を、複数行に分割します。
(^_0)ノ
by cheese999 (2012-09-25 22:09)