以下のEXCEL VBAを作りました。 これは動きましたが Option Explicit
以下のEXCEL VBAを作りました。 これは動きましたが Option Explicit Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd_ As Long) As Long Private Const SW_HIDE = 0 Private Const SW_SHOWNORMAL = 1 Private Const SW_SHOWMINIMIZED = 2 Private Const SW_SHOWMAXIMIZED = 3 Private Const SW_SHOW = 5 Private Const SW_RESTOR = 6 Private Const ERROR_FILE_NOT_FOUND = 2& Private Const ERROR_PATH_NOT_FOUND = 3& Private Const ERROR_BAD_FORMAT = 11& Declare PtrSafe Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long Declare PtrSafe Sub mouse_event Lib "user32" ( _ ByVal dwFlags As Long, _ Optional ByVal dx As Long = 0, _ Optional ByVal dy As Long = 0, _ Optional ByVal dwDate As Long = 0, _ Optional ByVal dwExtraInfo As Long = 0 _ ) Private Sub ExOpenKanrenFileCMS() Dim lret As Long Dim msg As String lret = ShellExecute(0, "open", "C:\Users..", vbNull, vbNull, SW_SHOW) Application.Wait Now() + TimeSerial(0, 0, 5) SendKeys "^t" SetCursorPos 108, 1020 mouse_event 2 End Sub この動作をしたいファイルが沢山で、下から13行目「lret = ShellExecute(0, "open", "C:\Users..", vbNull, vbNull, SW_SHOW)」の所のファイルのパスを都度書換えて行うのは辛い。 そこで https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10260634920 ←ここ紹介して頂いた『フォルダ内の指定した拡張子のファイルを全て取得して開く』という処理を上のコードと組み合わせればファイルのパスを都度書換えなくてもフォルダ内のファイル全部同じ処理がされるかなと思ったのですが、どこをどう組合わせるか不明なので教えて下さい。 ↑という質問を以前したら 「FileName に処理したいファイル名が得られているのですから lret = ShellExecute(0, "open", "C:\Users..", vbNull, vbNull, SW_SHOW) のファイル名部分と置き換える」というアドバイス頂いたんですが、 lret = ShellExecute(0, "open", "C:\Users..", vbNull, vbNull, SW_SHOW)の"C:\Users.."の部分と、 「Sub TEST5() Set Acad = CreateObject("Shell.Application") FolderPath = ThisWorkbook.Path & "\保存" FileName = Dir(FolderPath & "\*.dwg") Do While FileName <> "" 'ファイルパスを作成 FilePath = FolderPath & "\" & FileName」 を置き換えたりもっと少なく置き換えたりしたのですが構文エラーになってしまいます。どこを置き換えたらいいのでしょうか?
Visual Basic | Excel・117閲覧・50
ベストアンサー
>FolderPath = ThisWorkbook.Path & "\保存" マクロの入ってるファイルのパス&"\保存"->この場合はマクロファイルの入ってるフォルダの中の保存フォルダ >FileName = Dir(FolderPath & "\*.dwg") さっきの保存フォルダの中に入ってる、拡張子がdwgのファイル全部の名前リスト >Do While FileName <> "" Loopまでの間を名前リストが空になるまで繰り返す > 'ファイルパスを作成 >FilePath = FolderPath & "\" & FileName 開きたいファイル名の文字列をつくる。名前リストからいっこ取り出して保存フォルダのパスとくっつける > 'ファイルを開く >Acad.ShellExecute FilePath AutoCADでファイルを開く >FileName = Dir() '次のファイル名を取得 > Loop 繰り返しここまで ということをやっているので FolderPathに作業したいフォルダのパスを入れて FileNameの行の拡張子を自分のやりたいファイルに変えて Do While~Loopの中にlret = ShellExecute(0, "open", "C:\Users..", vbNull, vbNull, SW_SHOW)を入れて "C:\Users.."のとこをFilePathに変えて 'ファイルを開く のとこをやりたい処理に書き換えて で動くかも(未検証)
ちょっとやってみたのですが添付画像のようなエラーが出ました。 画像の見切れてる下の方はやりたい処理が書いてるだけです、最後End Subと書いてあります。 エラー文は「コンパイルエラー:修正候補:識別子または角かっこ([])で囲む必要がある名前が含まれています。」と書いてあります。
質問者からのお礼コメント
ありがとうございます。tac********さんもありがとうございます。
お礼日時:5/20 9:52