Я пытаюсь переименовать таблицу доступа с помощью VBA из Excel ... любая помощь?Как переименовать таблицу доступа с помощью VBA из Excel?
ответ
Как насчет:
Dim appAccess As Object
''acTable=0
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "C:\Docs\LTD.mdb"
appAccess.DoCmd.Rename "NewTableName", 0, "OldTableName"
appAccess.Quit
Set appAccess = Nothing
Было бы неплохо, если бы ваш код очистился после себя, вам не кажется? –
@David W Fenton У меня создалось впечатление, что это был форум, на котором идей должно быть достаточно, по большей части, и что даже однострочных ответов было бы достаточно. – Fionnuala
@ David W Fenton, если вы действительно думаете, что это так важно, отредактируйте ответ и исправьте его самостоятельно. –
Вот пример одного из моих программ (которые по-прежнему находится в ежедневном использовании на предприятии). Это взято из программы vb6, но также выполняется в vba. Я проверял это, чтобы быть уверенным.
В этом примере у нас есть временная таблица с именем «mytable_tmp», которая обновляется новыми данными, и мы хотели бы сохранить ее в таблице «mytable», заменив ее.
С редакторе Excel VBA вам необходимо установить ссылку на следующие два типа библиотек:
- "Microsoft ActiveX Data Objects 2.8 Library"
- «Microsoft ADO Ext 2.8 для DDL и. Безопасность "
Первый - это пространство имен ADODB, второе - пространство имен ADOX. (Возможно, у вас есть более ранняя версия MDAC, например, 2.5 или более ранняя, это тоже должно работать).
Private Sub RenameTable()
Dim cn As New ADODB.Connection
Dim cat As ADOX.Catalog
Const sDBFile As String = "c:\et\dbtest.mdb"
On Error GoTo ErrH
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeShareDenyNone
.Properties("User ID") = "admin"
.Properties("Password") = ""
.Open sDBFile
End With
Set cat = New ADOX.Catalog
cat.ActiveConnection = cn
cat.Tables("mytable").Name = "mytable_old"
cat.Tables("mytable_tmp").Name = "mytable"
cat.Tables("mytable_old").Name = "mytable_tmp"
ExitHere:
If Not cn Is Nothing Then
If Not cn.State = adStateClosed Then cn.Close
Set cn = Nothing
End If
Set cat = Nothing
Exit Sub
ErrH:
Dim sMsg As String
sMsg = "Massive problem over here man."
sMsg = sMsg & vbCrLf & "Description : " & cn.Errors.Item(0).Description
MsgBox sMsg, vbExclamation
GoTo ExitHere
End Sub
В надежде быть полезными.
Мне кажется, что единственное значение этого длинноволнового кода по трем строкам кода Remou - это когда у вас нет доступа , –
Он также дает возможность делать больше, чем просто прямую копию внутри одного и того же кода - и кто знает, пользователь Excel может не иметь доступа к Access. Тем не менее, в общем, я должен согласиться, что взгляды Рему более пригодны для использования. – mavnn
;) Как вы смеете включать обработку ошибок и сообщения пользователя. И о чем все это форматирование! (Очень смешно, если вы делаете это в голосе Стьюи). +1 – JeffO
Ниже приведена небольшая альтернатива приведенному выше методу Remou. Я использую функцию оболочки, чтобы открыть нужную мне базу данных, а затем функцию GetObject для доступа к ее свойствам и методам. Преимущества для этого метода: 1) Вы можете выбрать способ открытия окна для приложения Access. Для моих целей я хочу, чтобы это было скрыто. 2) У меня установлены оба Access 2003 и 2007, и метод Remou вызывает открытие 2003 года, чего я не хочу. Мой метод (я думаю) открывает файл в любой версии окон Access, которые бы использовались для его открытия, если бы пользователь дважды щелкнул по нему.
Недостатком является то, что вы должны убедиться, что база данных открыта, прежде чем пытаться ее манипулировать. Я использую простое подпрограмму ожидания, чтобы справиться с этим, но есть более сложные вещи, которые вы можете сделать.
Sub Rename()
Dim ObjAccess As Object, MDB_Address As String, TaskID As Integer
MDB_Address = "C:\example.mdb"
TaskID = Shell("msaccess.exe " & Chr(34) & MDB_Address & Chr(34), vbHide)
Call Wait
Set ObjAccess = GetObject(MDB_Address)
ObjAccess.DoCmd.Rename "NewTableName", 0, "OldTableName"
ObjAccess.Quit
Set ObjAccess = Nothing
End Sub
Sub Wait()
Dim nHour As Date, nMinute As Date, nSecond As Date, waitTime As Date
nHour = Hour(Now())
nMinute = Minute(Now())
nSecond = Second(Now()) + 5
waitTime = TimeSerial(nHour, nMinute, nSecond)
Application.Wait waitTime
End Sub
- 1. Импорт данных из доступа в открытую таблицу Excel? (Excel VBA)
- 2. Как вставить данные в таблицу доступа из двух различных файлов Excel с помощью VBA доступа
- 3. Открытие доступа из Excel VBA
- 4. Как переименовать диапазон с помощью VBA в excel 2007
- 5. Фильтровать сводную таблицу Excel с помощью VBA
- 6. Excel vba | запуск макроса доступа из excel
- 7. Импорт данных из доступа к excel с помощью vba
- 8. Экспорт таблицы файлов Access в таблицу Excel с помощью VBA
- 9. VBA: импортировать таблицу из Excel в SQL
- 10. Изменение имен таблиц доступа с помощью VBA
- 11. Excel Вставить таблицу доступа из таблицы Excel с таблицей Where
- 12. excel vba таблицы доступа
- 13. Как написать таблицу SQL с помощью excel VBA
- 14. Как разделить таблицу Excel с помощью vbscript, не используя vba
- 15. Как перебирать динамическую сводную таблицу с помощью Excel VBA?
- 16. Excel VBA для экспорта данных в таблицу доступа MS - Extended
- 17. Создать таблицу SQL из Excel VBA
- 18. Экспорт из Excel в Access 2007 с помощью Excel VBA
- 19. Котировки в строке доступа из Excel VBA
- 20. Переместить диапазон Excel в таблицу доступа через VBA
- 21. Обновить таблицу из запроса с помощью VBA
- 22. Как переносить таблицу из Acces в Excel с помощью VBA в Excel
- 23. Вставьте заявление в таблицу доступа с помощью VBA
- 24. Переименовать таблицу mysql с помощью текстового поля
- 25. Как открыть файл Excel и переименовать таблицу Excel?
- 26. переименовать таблицу excel, не теряя формулы ссылки
- 27. Как переименовать эту таблицу?
- 28. Переименовать таблицу MySQL с помощью SQL заявления
- 29. Импорт запросов доступа в Excel с помощью VBA
- 30. Экспортировать таблицу Excel или именованный диапазон для доступа с помощью VBA
Зачем вам это нужно? Если это не временная таблица данных. –