2013-04-01 3 views
0

Здравствуйте и спасибо, что посмотрели мой вопрос. Я пытаюсь получить скрипт, работающий для экспорта набора Excel-таблиц из базы данных Access 2007. У меня есть экспорт и другие функции, работающие достаточно хорошо, это функция сохранения, которая вызывает у меня проблемы. Моя текущая реализация - это окно сообщения, которое появляется пользователю с запросом имени папки. Это позволяет пользователю ввести существующее имя папки для сохранения в этой папке, но только если эта папка уже существует и находится в каталоге Мои документы. Для меня это функционально, но не совсем то, к чему я хочу, чтобы мой клиент был вынужден иметь дело. Есть ли способ получить простое «Сохранить как» или другое диалоговое окно сохранения файла по умолчанию? У меня есть сценарий импорта, работающий на другом конце, который работает с открытым файлом по умолчанию, я что-то упускаю? Скрипт ниже:Сохранение пользовательского экспорта из сценария Access 2007

Private Sub btnExport_Click() 
On Error GoTo Err_Command38_Click 

Dim strPath As String 

strPath = InputBox("Enter an existing folder name, or enter a file path.", "Export")  
Beep 
MsgBox "Report will now be exported to the " & strPath & " folder in My Documents" 
Dim strDocName As String 
strDocName = "DatabaseExport" + Date$ + ".xlsx" 'Enter your filename here 

DoCmd.SetWarnings False 
DoCmd.TransferSpreadsheet acExport, 10, "tblBenefit", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblBenefitDispensation", strPath + "/" +  strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblCourse", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblCourseEnrollment", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblDistinguishedStudent", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblEvent", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblEventFacultyAttendee", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblEventPresenter", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblEventsUniversityParticipant", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblForeignLanguageKnowledge", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblLanguage", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblGrant", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblOrganization", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblProgramRole", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblRole", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblStudent", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblStudyAbroad", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblStudyAbroadParticipation", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblTripLocation", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniDegreeProgram", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniFacultyActivity", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniParticipantStudentAttendee", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniParticipantFacultyAttendee", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniversity", strPath + "/" + strDocName, True 
DoCmd.TransferSpreadsheet acExport, 10, "tblUniversityFaculty", strPath + "/" + strDocName, True 
MsgBox "Export Complete!", vbOKOnly, "" 
DoCmd.SetWarnings True 

Exit_Command38_Click: 
Exit Sub 
Err_Command38_Click: 
MsgBox Err.Description 
Resume Exit_Command38_Click 

End Sub 

--- Конец сценария

Я попытался подставляя метод InputBox с чем-то вроде

Dim fileSelection As Object 

Set fileSelection = Application.FileDialog(2) 
fileSelection.Show 
Set strPath = fileSelection 

Но что бросает "объект требуемого" ошибку на Set strPath линия. Любая помощь, которую вы можете предложить, ценится, спасибо!

ответ

1

strPath не является объектом, поэтому Set не применяется. Попробуйте это вместо:

Set fileSelection = Application.FileDialog(2) 
fileSelection.Show 
If fileSelection.SelectedItems.Count > 0 Then 
    strPath = fileSelection.SelectedItems(1) 
End If 
+0

Спасибо за ваш ответ Gord! Ты был прав на деньги с этим. Мне пришлось изменить параметр TransferSpreadsheet, чтобы удалить мое собственное имя файла, но я в порядке, если пользователь получает знакомый диалог сохранения файлов. Еще раз спасибо! –

+0

@MiguetSchwab Добро пожаловать! Спасибо, что принял мой ответ. –

Смежные вопросы