エクセル小僧:VBAからDFを起動 [コンピューター]
以前、VBAで2つのテキストファイルを比較することを考えていたのですが。
閑が無くなってしまったので、DFの力を借りることにしました。
ワークシート上は、こんな感じです。
3つのセルに、DF.exe、テキストファイル1&2のファイル名(フルパス)を入力します。3つのセルには、それぞれ、"DF", "file1", "file2"という名前を付けておきます。マクロを起動するためのボタンを置いときます。
マクロの中身は、こんな感じです。
01: Sub USDiff1()
02: ' 機能:2つのテキストファイルを比較する
03: ' 【変数定義】
04: Dim file1(2) As String ' ファイル名
05: Dim str1 As String ' 文字列
06: ' ファイル名
07: file1(0) = Range("DF").Value ' DF.exeのファイル名(フルパス)
08: file1(1) = Range("file1").Value ' テキストファイル1のファイル名(フルパス)
09: file1(2) = Range("file2").Value ' テキストファイル2のファイル名(フルパス)
10: ' ファイルが存在するか確認
11: For i = 0 To 2
12: If Dir(file1(i)) = "" Then
13: MsgBox i & ": " & file1(i) & "が存在しません。"
14: Exit Sub
15: End If
16: Next
17: str1 = file1(0) & " " & file1(1) & " " & file1(2)
18: Shell str1, vbNormalFocus
19: End Sub
07-09行目:file1配列に、3つのファイル名(フルパス)を取り込みます。
11-16行目:3つのファイルが存在するか、確認します。無い場合は、メッセージを表示してマクロを終了する。
17行目:"DF.exe", テキストファイル1, テキストファイル2のファイル名(フルパス)を半角スペースを区切りとして連結します。
18行目:Shell関数を使って、DFを起動します。vbNormalFocusは、『フォーカスを持ち、元のサイズと位置に復元されるウィンドウ』という意味のウィンドウスタイルに関するオプションらしいです。
ワークシート上の比較ボタンにマクロをリンクさせて、DFを起動すると、こうなります。
【関連ページ】
Shell関数
DF
【ジョージのダイエット記録】
正月の暴飲暴食から立ち直りつつある今日このごろ。。
体重:60.0Kg 体脂肪:15.7% 内臓脂肪:8.0レベル 骨量:2.6Kg
基礎代謝:1377kcal/日 体内年齢:25才 筋肉:48.0kg 筋肉スコア:0
(2012/9/2)
【つぶやき】
百聞は一見にしかず。事件は会議室で起きてるんじゃない。
ぶつくさ、言ってないで、現場見にきなさいヨ。
出張費が無いなら、近場の現場だっていいでしょ。
客先の技術者と語り合うのもいいもんですよ。。刺激になるし。
【出張で見つけた】
今週、尾張に出張していたのですが、今池に『すいどうみち』なる散歩道を見つけました。
す いどう道緑道/番外(谷口交差点 ~ 今池)
しら河(ひつまぶし)
【今日の1曲】
人にやさしく
閑が無くなってしまったので、DFの力を借りることにしました。
ワークシート上は、こんな感じです。
3つのセルに、DF.exe、テキストファイル1&2のファイル名(フルパス)を入力します。3つのセルには、それぞれ、"DF", "file1", "file2"という名前を付けておきます。マクロを起動するためのボタンを置いときます。
マクロの中身は、こんな感じです。
01: Sub USDiff1()
02: ' 機能:2つのテキストファイルを比較する
03: ' 【変数定義】
04: Dim file1(2) As String ' ファイル名
05: Dim str1 As String ' 文字列
06: ' ファイル名
07: file1(0) = Range("DF").Value ' DF.exeのファイル名(フルパス)
08: file1(1) = Range("file1").Value ' テキストファイル1のファイル名(フルパス)
09: file1(2) = Range("file2").Value ' テキストファイル2のファイル名(フルパス)
10: ' ファイルが存在するか確認
11: For i = 0 To 2
12: If Dir(file1(i)) = "" Then
13: MsgBox i & ": " & file1(i) & "が存在しません。"
14: Exit Sub
15: End If
16: Next
17: str1 = file1(0) & " " & file1(1) & " " & file1(2)
18: Shell str1, vbNormalFocus
19: End Sub
07-09行目:file1配列に、3つのファイル名(フルパス)を取り込みます。
11-16行目:3つのファイルが存在するか、確認します。無い場合は、メッセージを表示してマクロを終了する。
17行目:"DF.exe", テキストファイル1, テキストファイル2のファイル名(フルパス)を半角スペースを区切りとして連結します。
18行目:Shell関数を使って、DFを起動します。vbNormalFocusは、『フォーカスを持ち、元のサイズと位置に復元されるウィンドウ』という意味のウィンドウスタイルに関するオプションらしいです。
ワークシート上の比較ボタンにマクロをリンクさせて、DFを起動すると、こうなります。
【関連ページ】
Shell関数
DF
【ジョージのダイエット記録】
正月の暴飲暴食から立ち直りつつある今日このごろ。。
体重:60.0Kg 体脂肪:15.7% 内臓脂肪:8.0レベル 骨量:2.6Kg
基礎代謝:1377kcal/日 体内年齢:25才 筋肉:48.0kg 筋肉スコア:0
(2012/9/2)
【つぶやき】
百聞は一見にしかず。事件は会議室で起きてるんじゃない。
ぶつくさ、言ってないで、現場見にきなさいヨ。
出張費が無いなら、近場の現場だっていいでしょ。
客先の技術者と語り合うのもいいもんですよ。。刺激になるし。
【出張で見つけた】
今週、尾張に出張していたのですが、今池に『すいどうみち』なる散歩道を見つけました。
す いどう道緑道/番外(谷口交差点 ~ 今池)
しら河(ひつまぶし)
【今日の1曲】
人にやさしく
nice! ありがとうございます。
(^o^)ノ
by cheese999 (2012-09-17 21:50)