Просто изучите немного VBS и немного потрудитесь над тем, как работать с определенной командой c для Access Exports / Imports.
Короче, мне нужно l oop через все файлы .accb в папки. (Я думаю, что у меня это прибито) Для каждого из найденных файлов мне нужно открыть файл и выполнить все сохраненные операции импорта, ТО сохраненные операции экспорта.
Пока я прикреплю свой код.
Dim objFSO, objFolder, objFile
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("X:\Path\Path")
For Each objFile in objFolder.Files
If LCase(objFSO.GetExtentionName(objFile.Name)) = "accb" Then
'Loop for Opening Access DB and running all imports, then exports
'Close Access DB
Next
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
Мне не удалось продвинуться слишком далеко с циклическим просмотром сохраненных Импортов / Экспортов в Access, хотя я сделал поиск в Google.
Я могу написать каждую команду импорта / экспорта явно , но я бы предпочел, чтобы этот скрипт не обновлялся каждый раз, когда я добавлял новый импорт или экспорт.
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase "Path"
objAccess.DoCmd.RunSavedImportExport "xxxx"
objAccess.DoCmd.RunSavedImportExport "yyyy"
objAccess.CloseCurrentDatabase
ObjAccess.Quit
'Access.Application.Quit
Set ObjAccess = Nothing
Я думаю, что единственный способ заставить его запустить импорт сначала - через стандарты именования. Допустим, каждый импорт / экспорт имеет следующий стандарт именования. Я - имя E - имя
Я думаю, что здесь нужны еще два цикла For / If, но не знаете, как go об этом.
Есть мысли?
Спасибо Вы, Андре,
Я снова обновлюсь, когда мне удастся проверить. Но это то, что у меня сейчас есть.
Dim objFSO, objFolder, objFile
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("X:\Path\Path")
For Each objFile in objFolder.Files
If LCase(objFSO.GetExtentionName(objFile.Name)) = "accb" Then
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase "Path"
Dim i As Integer
For i = 0 To CurrentProject.ImportExportSpecifications.count - 1
Debug.Print CurrentProject.ImportExportSpecifications(i).name
If Left(CurrentProject.ImportExportSpecifications(i).name,2) = "I-" Then
DoCmd.RunSavedImportExport CurrentProject.ImportExportSpecifications(i).name
Next i
Dim z As Integer
For z = 0 To CurrentProject.ImportExportSpecifications.count - 1
Debug.Print CurrentProject.ImportExportSpecifications(z).name
If Left(CurrentProject.ImportExportSpecifications(z).name,2) = "-" Then
DoCmd.RunSavedImportExport CurrentProject.ImportExportSpecifications(z).name
Next z
Set i = Nothing
Set z = Nothing
objAccess.CloseCurrentDatabase
ObjAccess.Quit
Set ObjAccess = Nothing
Next
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
Обновление № 3:
Хорошо, мой код в настоящее время выглядит следующим образом.
option explicit
dim objFSO, objFolder, objFile, Access
Set objShell = CreateObject(“WScript.Shell”)
ScriptPath = WScript.ScriptFullName
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set ScriptFile = objFSO.GetFile(ScriptPath)
ScriptFolder = objFSO.GetParentFolderName(ScriptFile)
Set objFolder = ScriptFolder
For Each objFile in objFolder.Files
If LCase(objFSO.GetExtentionName(objFile.Name)) = "accdb" Then
Set Access = objFolder & objFile.Name
Set objAccess = CreateObject("Access.Application")
objAccess.OpenCurrentDatabase Access
Dim i As Integer
For i = 0 To CurrentProject.ImportExportSpecifications.count - 1
Debug.Print CurrentProject.ImportExportSpecifications(i).name
If Left(CurrentProject.ImportExportSpecifications(i).name,2) = "I-" Then
DoCmd.RunSavedImportExport CurrentProject.ImportExportSpecifications(i).name
Next i
Dim z As Integer
For z = 0 To CurrentProject.ImportExportSpecifications.count - 1
Debug.Print CurrentProject.ImportExportSpecifications(z).name
If Left(CurrentProject.ImportExportSpecifications(z).name,2) = "E-" Then
DoCmd.RunSavedImportExport CurrentProject.ImportExportSpecifications(z).name
Next z
Set i = Nothing
Set z = Nothing
objAccess.CloseCurrentDatabase
ObjAccess.Quit
Set ObjAccess = Nothing
Set Access = Nothing
Set objFile = Nothing
Next
Set objFolder = Nothing
Set objFSO = Nothing
Цель состоит в том, чтобы определить папку, в которой находится скрипт, l oop через файлы .accdb и выполнить весь их импорт, а затем экспортировать. Я получаю сообщение об ошибке в строке 1, и я не могу на всю жизнь понять, почему!?! «Ошибка компиляции Microsoft VBScript»
Есть мысли?
В качестве альтернативы, есть ли лучший способ сделать все это вместе?
Спасибо!