お世話になります。
こちら、エクセルVBA初心者です。
以下のコードは、アクセスVBAにて、
アクセスからエクセルにT日報テーブルを既存のエクセルファイルへ新規シートとして、
エクスポートし、一行目を削除した上で、
これを既存の貼付用シートの一番最後の行の一つ下の行に張り付けようとしています。
しかしながら、最終行を取得する処理にて、1004 アプリケーション定義またはオブジェクト定義のエラーです が出ます。
ENDプロパティーを外しますと、きちんと進みますが、一番最後の行の取得にはENDプロパティーはかかせません。
また、コピーの処理でも、.PasteSpecialの後の xlPasteValuesでひっかかります。
どうしたらよいのか、よろしくご教授ください。
ACCESS
1Public Function Startexec() 2 3Dim rs As Recordset 4Const xlMinimized = -4140 5Dim stpathname As String 6Dim stTbl As String 7Dim stvardir As String 8Dim stFilename As String 9Dim stSheet As String 10Dim stSheetQuery As String 11Dim Excel As Object 12Dim wb As Object 13Dim llastrow As Long 14 15 16 17 stSheet = "貼付用" 18 stpathname = "\ここにファイルのパスが入ります" 19 20 21 stFilename = "練習用.xlsm" 22 23 24 stvardir = stpathname & "\" & stFilename 'エクセルファイルを指定します。 25 26 27 stTbl = "T日報" 'Accessファイルを指定します。 28 29 DoCmd.TransferSpreadsheet acExport, _ 30 acSpreadsheetTypeExcel9, stTbl, stvardir, False 31 32 Set rs = CurrentDb.OpenRecordset(stTbl) 33 34 35 rs.MoveLast 36 37 stSheetQuery = "T日報" 38 39 Set Excel = CreateObject("Excel.Application") 'Excel 40 Excel.WindowState = xlMinimized '最小化 41 Excel.Visible = True '表示 42 Set wb = Excel.Workbooks.Open(stvardir) 'excelファイルを開く 43 wb.Sheets(stSheetQuery).Rows(1).Delete 'クエリシートの1行目削除 44 45 wb.Application.DisplayAlerts = False 'メッセージ非表示 46 47 llastrow = wb.Sheets(stSheetQuery).Cells(wb.Sheets(stSheetQuery).Rows.Count, 1).End(xlUp).Row 48 49 'ここで、1004 アプリケーション定義またはオブジェクト定義のエラーです が出ます。 50 51 52 wb.Sheets(stSheetQuery).Range("A1:W" & rs.RecordCount).Copy 'コピー 53 wb.Sheets(stSheet).Range("A" & llastrow).Offset(1, 0).PasteSpecial xlPasteValues 54 55 56 wb.Application.DisplayAlerts = True 'メッセージ再表示 57 58 Excel.DisplayAlerts = False '警告禁止 59 wb.Sheets(stSheetQuery).Delete 'クエリシート削除 60 Excel.DisplayAlerts = True '警告許可 61 wb.Close True '閉じる 62 Excel.Quit 'Excel終了 63 64 65 66 Exit Function 67
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 04:08
2020/11/19 04:40