Ошибка доступа MS Access '3011 отображается в одном коде, но не в другом - PullRequest
0 голосов
/ 05 октября 2018

Happy Anniversary и всего наилучшего в этом сообществе. Я пытаюсь научиться использовать DoCmd.TransferSpreadsheet для экспорта запросов и диаграмм в Excel. В моей базе данных у меня есть две формы для экспорта в каждой из них запросов в Excel и созданияДиаграмма В каждой форме пользователь выбирает значение в текстовом поле, и в форме в форме отображается изображение frm_createxlstacked, пользователь выбирает две даты и нажимает кнопку команды, чтобы экспортировать запрос в Excel, и создает диаграмму xlClustered.Этот код VBA работает нормально.

Это код VBA для createxlstacked

Private Sub cmbexpqry_stacked_Click()

Dim wb As Object
Dim xl As Object
Dim sExcelWB As String
Dim ws As Worksheet
Dim r As Range
Dim ch As Object ''Excel.Chart
Dim mychart As ChartObject
Dim myMax, myMin As Double
Dim qry_createxlstacked As Object
Dim fullPhotoPath   As String

If IsNull(Me.cbxclstacked.Value) Then Exit Sub
Dim wb As Object, xl As Object, ch As Object, mychart As ChartObject
Dim fullPhotoPath   As String

fullPhotoPath = Add_PlotMap(Form_frm_createxlstacked.cbxclstacked.Value)
Set xl = CreateObject("excel.application")
On Error Resume Next
Kill TrailingSlash(CurrentProject.Path) & Form_frm_createxlstacked.cbxxlstacked.Value & "qry_createxlstacked.xlsx"
Err.Clear
On Error GoTo 0
sExcelWB = TrailingSlash(CurrentProject.Path) & "qry_createxlstacked.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "qry_createxlstacked.xlsx", sExcelWB, True
Set wb = xl.Workbooks.Open(sExcelWB)
Set ws = wb.Sheets("qry_createxlstacked.xlsx")
Set ch = ws.Shapes.AddChart.Chart
Set mychart = ws.ChartObjects("Chart 1")
ws.Shapes.AddPicture fullPhotoPath, msoFalse, msoCTrue, r.Left, r.Top, 500, 250

With ch
    .ChartType = xlColumnClustered
    .SeriesCollection(2).AxisGroup = 2
    .SeriesCollection(2).ChartType = xlLineMarkers
    .ChartGroups(1).GapWidth = 69
    .ChartArea.Height = 250
    .ChartArea.Width = 550
End with

wb.Save
xl.Visible = True
xl.UserControl = True
Set ws = Nothing
Set wb = Nothing

End Sub

В форме frm_creategannt пользователь выбирает две даты и нажимает кнопку команды для экспорта запроса в Excel и создает xlClusteredДиаграмма, но, VBA отображает: Ошибка времени выполнения «3011».Механизму базы данных Microsoft Office Access не удалось найти объект «qry_creategantt.xlsx».Убедитесь, что объект существует и что вы ...

Это код VBA

Private Sub cmbexpqry_gantt_Click()

If IsNull(Me.cmbexpqry_gantt) Then Exit Sub
Dim wb As Object
Dim xl As Object
Dim sExcelWB As String
Dim ws As Worksheet
Dim r As Range
Dim ch As Object ''Excel.Chart
Dim mychart As ChartObject
Dim qry_creategantt As Object
Dim fullPhotoPath   As String

fullPhotoPath = Add_PlotMap(Form_frm_creategantt.cbxcreategantt.Value)
Set xl = CreateObject("excel.application")
On Error Resume Next
Kill TrailingSlash(CurrentProject.Path) & Form_frm_creategantt.cbxcreategantt.Value & "qry_creategantt.xlsx"
Err.Clear
On Error GoTo 0
sExcelWB = TrailingSlash(CurrentProject.Path) & "qry_creategantt.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "qry_creategantt.xlsx", sExcelWB, True
Set wb = xl.Workbooks.Open(sExcelWB)
Set ws = wb.Sheets("qry_creategantt.xlsx")
Set ch = ws.Shapes.AddChart.Chart
Set mychart = ws.ChartObjects("Chart 1")
ws.Shapes.AddPicture fullPhotoPath, msoFalse, msoCTrue, r.Left, r.Top, 500, 250

With ch
    .ChartType = xlBarStacked
End With

wb.Save
xl.Visible = True
xl.UserControl = True
Set ws = Nothing
Set wb = Nothing 

End Sub

В этой строке возникает ошибка '3011': DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, qry_creargantt.xlsx ", sExcelWB, True

Я сравнивал одну за другой каждую строку кодов. Кроме того, я проверял запросы для каждой формы.

Мне нужно исправить ошибку во время выполнения '3011'начать тестирование кода VBA для создания диаграммы Ганта

По моему мнению, я не нашел ошибок, но я застрял

Я ценю ваш ответ, предложение и усилия в коде с ошибкой.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Невозможно вызвать запрос ". Anything".является недопустимым символом в имени запроса доступа.

Так что тщательно проверяйте название вашего запроса, на который вы ссылаетесь.Потому что это не qry_creategantt.xlsx

0 голосов
/ 05 октября 2018

Если ошибка возникает в строке DoCmd.TransferSpreadsheet, как вы указываете, то ошибка очень ясна.

Вы сказали Microsoft Access выполнить запрос с именем qry_creategantt.xlsx (для экспорта этогоданные в Excel), и этот запрос не существует в вашей базе данных.

Проверьте правильность написания запроса в списке запросов и в вашем коде.В приведенном выше вопросе, где вы переводите эту строку кода в место, где произошла ошибка, вы написали имя запроса по-другому: qry_creargantt.xlsx.Какое написание является правильным?Это может быть вашей проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...