Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : その他)
DoCmd.Save 『この操作を完了することができません』
投稿日時: 22/04/01 16:12:48
投稿者: mmiwa

いつもありがとうございます
 
教えてください Accessは2010を使っています
 
下記のコードでモジュールの書換えをしています
ところが ←←←←← のところで
エラー『この操作を 完了することができません。 コードを中断し、再度実行してください』が出たり
出なかったりします
 
何が問題で再現性のないエラーが出るのでしょうか
よろしくお願いいたします
 
Dim myMDL As Module
Dim myArray As Variant
Dim buf As Variant
Dim i As Integer
Dim j As Integer
 
myArray = Array( _
"M:M_モジュール1 :AAA:Dim i As Integer:Dim iii As Integer", _
"F:Form_フォーム1:BBB:Dim x As Integer:Dim xxx As Integer" _
)
 
For i = 0 To UBound(myArray)
 
    buf = Split(myArray(i), ":")
 
    If Trim(buf(0)) = "F" Then DoCmd.OpenForm Replace(Trim(buf(1)), "Form_", ""), acDesign
 
    DoCmd.OpenModule Trim(buf(1))
    Set myMDL = Application.Modules(Trim(buf(1)))
 
    With myMDL
 
        SLine = .ProcStartLine(Trim(buf(2)), vbext_pk_Proc)
        CLine = .ProcCountLines(Trim(buf(2)), vbext_pk_Proc)
 
        For j = SLine To SLine + CLine - 1
            If InStr(.Lines(j, 1), Trim(buf(3))) > 0 And Left(Trim(.Lines(j, 1)), 1) <> "'" And InStr(.Lines(j - 1, 1), Trim(buf(4))) = 0 Then
                .InsertLines j, Trim(buf(4)): j = j + 1
            End If
        Next j
 
        If Trim(buf(0)) = "F" Then
            DoCmd.Close acForm, Split(Trim(buf(1)), "_")(1), acSaveYes
        Else
            DoCmd.Save acModule, myMDL.NAME ←←←←←
        End If
 
    End With
 
    Set myMDL = Nothing
 
Next i

回答
投稿日時: 22/04/04 10:37:37
投稿者: Suzu

試せてはいませんが、
 
Docmd なので、非同期での動作の兼ね合いがあるかもしれません。
DoEventsや、タイマーを入れたりし、時間稼ぎを行ってみてください。
 
 
個人的には、コード修正を VBAで行うメリットを感じません。
個人で使う分には、手動で直せば済みます。
他者を含めた人数で使用するのであれば、バックエンド/フロントエンド に分ける事がほとんどですから、
 フロントエンドを配布すれば良いと思っています。

投稿日時: 22/04/04 14:21:50
投稿者: mmiwa

Suzuさん
 
ありがとうございます
「時間稼ぎ」してみます
 
実は稀に配布されるフロントエンドを
自分用にアレンジする目的で
コードを書いています
 
修正箇所(20カ所位)の一部をすっかり忘れてしまい失敗したことがあります
実際には20カ所位修正しているので、かなりの時間を要します
 
そこで、いっそのことVBAで対応しようと考えました
確かにご指摘の通り、慎重に手動で直せば事足りることですね

回答
投稿日時: 22/04/05 08:35:10
投稿者: Suzu

自分用と言うことなのであれば、なおさら 手動でも良いかなとも思います。
配布されたコードに対し、今までの修正 で良いのかの検証も必要でしょうし。
 
可能であればサブルーチン化を検討しても良いでしょうが
一概にサブルーチン化できる事でもないでしょうし。。
 
修正前/後 の対比表を作っておき 確認しながら が順当かと思います。

投稿日時: 22/04/07 10:48:20
投稿者: mmiwa

Suzu さん
 
ありがとうございました
 
「修正前/後 の対比表を作っておき 確認しながら」
 
おっしゃる通り
それが適切ですね
 
手抜きをせず慎重に作業する方向で
検討します
 
ご指摘ありがとうございました