VBSでAccdbファイルを最適化と修復するファイルを作っています。
フォルダのドラッグ&ドロップとAccdbファイルのリスト化までは
うまくいくのですが、最適化がうまくいきません。
どのようにすればよいでしょうか。
Accessは2013、DAO3.6です。
よろしくお願いします。
VBScript
' ドラッグ&ドロップしたフォルダ内にあるAccdbファイルの最適化を実行するスクリプト ' Accdbファイルが入ったフォルダをスクリプトにドラッグ&ドロップして実行 Option Explicit Dim Excel Set Excel = WScript.CreateObject("Excel.Application") ' ArrayList作成 Dim ary Set ary = CreateObject("System.Collections.ArrayList") Dim Args Set Args = WScript.Arguments 'パラメータ数チェック If Args.Count < 1 Then WScript.Echo "当スクリプトにフォルダをドラッグ&ドロップして処理を実行してください。" WScript.Quit End If 'フォルダ判別 With CreateObject("Scripting.FileSystemObject") If .FolderExists(Args(0)) = False Then WScript.Echo "フォルダが見つかりません。" & vbCrLf & "あるいはフォルダではありません。" WScript.Quit End If End With 'Excelファイルの有無チェック If IsExistsParticularFile(Args(0), "accdb") = False Then WScript.Echo "指定したフォルダ内にxlsmファイルが見つかりませんでした。" WScript.Quit End If Dim item Dim DBE2 Set DBE2 = CreateObject("DAO.DBEngine.120") For Each item In ary DBE2.RepairDatabase item ★★★ エラー行 ★★★ DBE2.CompactDatabase item, "new" & item Next Call MsgBox("Optimization complete.", vbInformation) Private Function IsExistsParticularFile(ByVal FolderPath, ByVal FileExtension) '指定したフォルダ内に特定の拡張子のファイルがあるかを調べる Dim ret Dim f ret = False '初期化 With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(FolderPath).Files Select Case LCase(.GetExtensionName(f)) Case LCase(FileExtension) ret = True ary.add .GetFile(f).Path Exit For End Select Next End With IsExistsParticularFile = ret End Function
参考にしたURL
https://answers.microsoft.com/ja-jp/msoffice/forum/all/vba%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4/f49e8ed9-fc2a-4425-ada3-812461455ec2
https://www.excel-pitin.net/single-post/2019/04/12/access%E3%82%84access-runtime%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%9A%E3%81%ABmdb%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%80%81accdb%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%99%E3%82%8B
エラーメッセージ
Windows Script Host
スクリプト:C:\Users(ユーザー名)\Desktop\aaaa.vbs
行: 42
文字: 3
エラー: Operation is not supported for this type of object.
コード: 800A0CB3
ソース: DAO.DbEngine
0 コメント