Я выбрал подход к исправлению кода, который должен решить проблему.Проверка каждого из объектов, из строки разрыва кода, в Immediate Window также может помочь (например, что возвращает «? Currentdb.Name»)
1) VBA поддерживает New как часть объявления объекта, но... (лучше всего исследовать этот бит. Из памяти он всегда медленнее, потому что vba должен перепроверить, был ли создан экземпляр объекта.)
Dim acc As Access.Application: Set acc = New Access.Application
2a) Квалифицировать ваши вызовы CurrentDb
acc.CurrentDb.TableDefs(myValue).Fields("F4").Properties!ColumnWidth = 2500
acc.CurrentDb.TableDefs(myValue).Fields("F7").Properties!ColumnWidth = 2500
2b) Еще лучше, явно ссылаться на каждый из объектов в дереве [это поможет с попрошайничеством]
' add Reference to "Microsoft DAO 3.6 Object Library"
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = acc.CurrentDb
db.TableDefs.Refresh ' CurrentDb should do this, but can't hurt
Set tdf = db.TableDefs(myValue)
With tdf
.Fields("F4").Properties!ColumnWidth = 2500
.Fields("F7").Properties!ColumnWidth = 2500
End With
Set tdf = Nothing
Set db = Nothing
Надеюсь, это поможет, GraemeR