Excel VBA

【Excel VBA】【マクロ】【Tips】VBSで開いたダイアログを手前に持ってくる

こんにちは!Lenocoです。本日も見てくださりありがとうございます。

今回はVBSについてのTips回です!!!

VBSで開いたダイアログを手前に持ってくる

VBSでファイル選択のダイアログを開くようにしたのはいいけれど、
他のアプリケーションを開いているとその下にダイアログが隠れてしまう・・
Windowsの違いなどによっても動きが変わるようで、
こちらのPCでは手前に表示されるのに、あっちのPCでは他のアプリケーションの裏に行ってしまって使いづらい!
ということが起きてしまうことがあります。
そんな時はぜひこちらの方法を試してみてください!
前回作成した、テキストファイルを書き変えるVBSに処理を組み込んでみたいと思います。

コード

Option Explicit

Dim MyFile 
Dim myRec
Dim FS
Dim excel
Dim buf
Dim newFile

'テキストファイルの選択
Set excel = CreateObject("Excel.Application")
excel.Visible = True
CreateObject("WScript.Shell").AppActivate excel.Caption
excel.Visible = False
buf = excel.GetOpenFilename("Text File,*.txt,All,*.*",1,"ファイルを選択して下さい","開く",false)

If buf <> False Then
    newFile = replace(buf ,".txt","_変換後.txt")
    Set FS = CreateObject("Scripting.FileSystemObject")
    FS.CopyFile buf, newFile, True
    Set MyFile = FS.OpenTextFile(newFile)

    'テキストデータ読込
    myRec = MyFile.ReadAll
    'テキスト変換
    myRec = replace(myRec,vbCrLf ,vbTab)
    MyFile.Close

    '書き込み
    Set MyFile = FS.CreateTextFile(newFile)
    MyFile.WriteLine (myRec)
    MyFile.Close
Else
    WScript.Quit
End If

msgbox "完了!", vbSystemModal

コードの説明

「Set excel ~」の後3行を追加しました。
新しく追加したところのみ説明していきます!
Excelを表示します。
AppActivateステートメントを使用し、Excelをアクティブ(手前に表示)にします。
Excelを非表示に戻します。

AppActivateステートメントを動作させるために、一度ExcelをVisible=True(表示)にし、
Excelを手前に持ってきたあとVisible=False(非表示)に戻すということをしています。
この処理を入れることで一瞬エクセルがちらつきますがご了承ください。

さいごに

テキスト置き換えのVBS、どんどん良くなってきました!
また良い処理があれば追加していきたいと思います。

Lenoco

COMMENT

メールアドレスが公開されることはありません。