これは何度も実行時エラー '1004'の下で発生していることがわかっていますが、ここと他のサイト。私のコードは、Accessフォームのコマンドボタンから実行され、フォームを開いた後初めて正常に実行されますが、その後の試行で失敗します。不適切な参照や2番目のExcelオブジェクトを開いていると思います。 他の書式設定が行われていますが、私はできるだけ省略しています。Excelでアクセスするときに実行時エラー '91'が発生する
Selection.Insertシフト::= xlToRight、CopyOrigin:
Dim dbs As Database
Dim rst As DAO.Recordset
Dim appExcel As Excel.Application
Dim wbk As Excel.Workbook
Dim wks As Excel.Worksheet
Dim lngCount As Long
Dim lngDataRows As Long
Dim intLoop As Integer
Dim strSheetName As String
Dim dteStart As Date
Dim dteEnd As Date
Dim curStartBal As Currency
Dim intMoves As Integer
Dim lngCol As Long
Dim lngRow As Long
Dim intField As Integer
Dim intFieldCount As Integer
Dim strPath As String
Dim strFile As String
Dim strPathFile As String
Dim blnFileCheck As Boolean
strFile = "BudgetForecast.xlsx"
strPath = genFindFolder("tblSettings") 'provides path to data store
strPathFile = strPath & strFile
blnFileCheck = genDeleteFile(strPath, strFile) 'Deletes existing file if it exists
dteStart = DateAdd("m", 1, Date)
dteEnd = DateAdd("m", 12, Date)
strSheetName = "Forecast " & MonthName(Month(dteStart), True) & " " & CStr(Year(dteStart)) 'Start Month and Year
strSheetName = strSheetName & " To " & MonthName(Month(dteEnd), True) & " " & CStr(Year(dteEnd)) 'Add End Month and Year
curStartBal = [Forms]![frmBudForecast]![txtStart1]
'Create new Excel Workbook and add data
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("qryBudForecastFinal")
Set appExcel = New Excel.Application
Set wbk = appExcel.Workbooks.Add
Set wks = wbk.ActiveSheet
appExcel.Visible = True
With wks
.Name = strSheetName
.Cells(1, 1).Value = "Sort"
.Cells(1, 2).Value = "Date"
.Cells(1, 3).Value = "Type"
.Cells(1, 4).Value = "Account"
.Cells(1, 5).Value = "Payee/Details"
.Cells(1, 6).Value = "Jan"
' lines for Feb to Nov removed to shorten extract
.Cells(1, 17).Value = "Dec"
.Cells(1, 18).Value = "Totals"
rst.MoveLast
rst.MoveFirst
lngCount = rst.RecordCount
intFieldCount = rst.Fields.Count
lngDataRows = lngCount + 5
rst.MoveFirst
Do Until rst.EOF
lngCol = 1
lngRow = .[A65536].End(3).Row + 1
For intField = 0 To intFieldCount - 1
.Cells(lngRow, lngCol) = rst.Fields(intField).Value
lngCol = lngCol + 1
Next intField
rst.MoveNext
Loop
'Shift columns around to correct order
If Month(Date) <> 12 Then 'If December, records are already in correct order
intMoves = Month(Date)
For intLoop = 1 To intMoves
.Columns("R:R").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove '###Error here
.Columns("F:F").Select
Selection.Cut Destination:=Columns("R:R")
.Columns("F:F").Select
Selection.Delete Shift:=xlToLeft
Next intLoop
End If
End With
'Save new file (next line commented-out for testing)
'appExcel.ActiveWorkbook.SaveAs FileName:=strPathFile, ConflictResolution:=xlOtherSessionChanges
'Close Excel
appExcel.ActiveWindow.Close (False)
'Cleanup
rst.Close
Set rst = Nothing
Set dbs = Nothing
Set wks = Nothing
Set wbk = Nothing
appExcel.Quit 'Not sure if this line is necessary
Set appExcel = Nothing
End Sub
エラーがこのラインに発生する()
ます。Private Sub cmdExport_Click = xlFormatFromLeftOrAbove
と '選択' 'のように見えます何もない。
私はあらゆる種類のバリエーションと構文の改訂を試みました - 私は列Rの選択により具体化する必要があると思うが、私は方法を知らない。ちなみに、コードが失敗すると、スプレッドシートの列Rはが選択されます。 フォームのコマンドボタンをクリックした後にコマンドボタンを非表示にしたいと思っていますが、これが偽りのようになり、私の理解を助けることはないでしょう。
: .Columns( "R:R")
は良好のように記述されるであろう。Shiftキーを挿入:= xlToRight、CopyOrigin。 ( 'R:R') これは'91 'エラーを修正しましたが、エラー(' 1004 ' - オブジェクトの' Columns 'メソッド)が発生しました。 「_グローバル」に失敗しました)次の行ただし、2行目を に変更する。列( "F:F")。切り取り先:= wks.Columns( "R:R") これを修正しました。ご協力いただき誠にありがとうございます。 – user8881858