VBSでAccdbファイルを最適化と修復するファイルを作っています。
フォルダのドラッグ&ドロップとAccdbファイルのリスト化までは
うまくいくのですが、最適化がうまくいきません。
どのようにすればよいでしょうか。
Accessは2013、DAO3.6です。
よろしくお願いします。
VBScript
1' ドラッグ&ドロップしたフォルダ内にあるAccdbファイルの最適化を実行するスクリプト 2' Accdbファイルが入ったフォルダをスクリプトにドラッグ&ドロップして実行 3Option Explicit 4 5Dim Excel 6Set Excel = WScript.CreateObject("Excel.Application") 7 8 9' ArrayList作成 10Dim ary 11Set ary = CreateObject("System.Collections.ArrayList") 12 13Dim Args 14Set Args = WScript.Arguments 15 16'パラメータ数チェック 17If Args.Count < 1 Then 18 WScript.Echo "当スクリプトにフォルダをドラッグ&ドロップして処理を実行してください。" 19 WScript.Quit 20End If 21 22'フォルダ判別 23With CreateObject("Scripting.FileSystemObject") 24 If .FolderExists(Args(0)) = False Then 25 WScript.Echo "フォルダが見つかりません。" & vbCrLf & "あるいはフォルダではありません。" 26 WScript.Quit 27 End If 28End With 29 30'Excelファイルの有無チェック 31If IsExistsParticularFile(Args(0), "accdb") = False Then 32 WScript.Echo "指定したフォルダ内にxlsmファイルが見つかりませんでした。" 33 WScript.Quit 34End If 35 36 37Dim item 38Dim DBE2 39Set DBE2 = CreateObject("DAO.DBEngine.120") 40 41For Each item In ary 42 DBE2.CompactDatabase item, "new" & item ★★★ エラー行 ★★★ 43Next 44Call MsgBox("Optimization complete.", vbInformation) 45 46 47Private Function IsExistsParticularFile(ByVal FolderPath, ByVal FileExtension) 48'指定したフォルダ内に特定の拡張子のファイルがあるかを調べる 49 Dim ret 50 Dim f 51 52 ret = False '初期化 53 With CreateObject("Scripting.FileSystemObject") 54 For Each f In .GetFolder(FolderPath).Files 55 Select Case LCase(.GetExtensionName(f)) 56 Case LCase(FileExtension) 57 ret = True 58 ary.add .GetFile(f).Path 59 Exit For 60 End Select 61 Next 62 End With 63 IsExistsParticularFile = ret 64End Function
エラーメッセージ
Windows Script Host
スクリプト:C:\Users(ユーザー名)\Desktop\aaaa.vbs
行: 42
文字: 3
エラー:Not a valid file name.
コード:800A0BEF
ソース:DAO.DbEngine

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/23 11:11
2022/08/23 11:28
2022/08/23 13:24