• 締切済み

ACCESSからEXCELへのオートメーション操作

ACCESSからEXCELへのオートメーション操作について質問させて下さい。 以下のようにコードを書きましたが、エラーに飛んでしまいます。 また、EXCELファイルは出来ているのですが、データがきちんと出力されません。 解決手段をご教授して下さい。 宜しくお願いします。 Private Sub コマンド39_Click() On Error GoTo エラー_Err DoCmd.TransferSpreadseet acExport, acSpreadsheetTypeExcel8, "営業報告", "C:\営業日報.xls", True Dim objEXE As Object , Dim wk_excel As Object, wk_book As Object Dim wk_file As String wk_file = "営業日報" Set objEXE = Excel.Application objEXE.Workbooks.Open ("C:\営業日報.xls") wk_excel.Sheets(wk_file).Columns("C:C").Select wk_excel.Sheets(wk_file).Open.Columns("E:E").ColumnWidth = 10 With Selection .Formula = .Value End With wk_excel.Sheets(wk_file).Range("A1").Select Exit Sub エラー_Err: MsgBox "エラーです" エクセル_Exit: Exit Sub End Sub

みんなの回答

回答No.2
回答No.1

On Error GoTo エラー_Err をはずして エラーを起こしてください エラーが起きないように作るのが先です 起きたエラーは エラー原因に対応して処理するが普通です 「エラー処理へ飛ぶ」のようにまとめてポイッとしてしまうと なんにもわかりません テストする時点では エラーはエラーとして受け止めてください 想定されるエラーがなくなるまでデバッグか 予想されるエラーに対して個別に対応する処理を行ってください Set objEXE = Excel.Application これは何をしていますか?

関連するQ&A

  • Accessへのエクセルデータインポート

    Accessへのエクセルデータインポート 環境:Access2000/WinXP アクセス2000の特定テーブルへ、エクセルデータをインポートするよう組んだのですが、新しくデータを追加すると、これより前に入っていたデータがレコードを残して消えてしまいました。 新規データを追加した際にただの追加としたいのですがどこがおかしいのでしょうか。 Private Sub データ登録_Click() Dim objExcel As Object Dim varFilePath As Variant Dim bln As Boolean Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "受講者情報一覧" Set objExcel = CreateObject("Excel.Application") varFilePath = objExcel.GetOpenFilename("Microsfot Exel (*.xls), *.xls", , "xls選択") If varFilePath <> False Then varxls = varFilePath Else Exit Sub End If Set objExcel = Nothing varxls = varFilePath strrange = "" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & "へ、インポートします。" DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, varac, varxls, True MsgBox "正常にインポート完了しました。" End If Exit Sub エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Sub End Sub

  • AccessからExcel最小化

    お世話になっております 以下の件、お分かりの方ご教授お願いします Win2000 Access2000 Accessから起動している指定したパスの エクセルファイルを最小化したいと思ってます 以下の様に組んでますが、インデックスが有効範囲にないと 出てしまいます。パスは確実にあるのですが原因がわかりません Private Sub Excel最小化_Click() Dim mobj As Object On Error GoTo err Set mobj = New Excel.Application mobj.Workbooks("C:\test\test.xls").active   ←ここでエラー mobj.windowsstate = xlMaximized Exit Sub err: MsgBox Error(err.Number) End Sub

  • アクセス(access)からエクセルにエクスポート

    アクセスから、エクセルにクエリのデータを出力する際に、 「TransferSpreadsheet」を使用していますが、 そのエラー処理について、教えて下さい。 保存しようとしているファイルが既に開かれている場合に、 処理を中止し、エラーメッセージを出したいのですが、 どのようにすればいいのでしょうか? なお、現在のVBAは次のとおりです。 Private Sub コマンド01_Click() Dim a As String Dim b As Variant a = "Q_一覧表" b = "C:\一覧表.xls" DoCmd.TransferSpreadsheet acExport, _ acSpreadsheetTypeExcel9, a, b, True MsgBox "データを出力しました。" Exit Sub End Sub

  • access VBAでのファイル読み込みとその保存方法

    昨日も質問させていただいたVBA初心者です。 いろいろ調べましたが解決しなかったので、 またまた質問させていただきます。 ファイルを読み込んで、それを別ファイルに保存したいのですが、 下記ですと、1行のみ保存されるだけでした。 この方法ですと、すべて保存されるはずと書かれていたのですが。 全くどこが悪いのか分かりません、よろしくお願いします。 Private Sub cmd_Click() On Error GoTo Err_cmd_Click Dim ReadFileName As String Dim Contents As String Dim WriteFileName As String ReadFileName = "P:\dl_engine\logs1\service\20020223" ' ファイルを読み込む Open ReadFileName For Input As #1 Input #1, Contents Close #1 WriteFileName = "C:\Contents\data\Melody.csv" ' ファイルに保存 Open WriteFileName For Output As #2 Write #2, Contents Close #2 '正常終了 Exit_cmd_Click: Exit Sub 'エラー処理 Err_cmd_Click: Beep Select Case Err.Number Case Else MsgBox Err.Number & ":" & Err.Description End Select Resume Next End Sub

  • Access2013で確認メッセージを消すには

    画像ファイルの管理データベースを作っています。 管理データベースには、ローカルファイルのフルパスのみ記録し ボタンをクリックしたとき、Windowsフォトビューアで プレビューするようにコードを書きました。 しかし、JPGファイルを開くときは問題ないのですが PNGファイルを開くとき、毎回Microsoft Officeの確認メッセージ ~を開いています。ファイルにはウイルスやコンピューターに問題を起こす 可能性のあるものが含まれていることがあります。 このファイルが信頼できる所からのものか確かめてください。 ファイルを開きますか? が表示されます。 メッセージを表示させない為にはどうしたら良いか、ご教授願います。 以下、ファイルを開く為に作ったコード2種です。 実行結果は同じです。 コード1 Private Sub OpenBotan_Click() Dim strInput As String On Error GoTo Error_GetUserAddress strInput = Me.パス Application.FollowHyperlink strInput, , True GetUserAddress = True Exit_GetUserAddress: Exit Sub Error_GetUserAddress: MsgBox Err & ": " & Err.Description GetUserAddress = False Resume Exit_GetUserAddress End Sub コード2 Private Sub イメージ21_Click() On Error GoTo エラー Dim myTextValue As TextBox Set myTextValue = Me.パス If IsNull(myTextValue) Then MsgBox "URLが未入力です。": Exit Sub Me.イメージ21.HyperlinkAddress = "" '--- A Me.イメージ21.HyperlinkAddress = myTextValue Exit Sub エラー: MsgBox Err.Number & " : " & Err.Description Exit Sub End Sub

  • アクセス2000VBA

    アクセス2000でのVABで Dim OutFlName Dim 先頭 Dim 後方 WK集計開始日 = Me![開始日] WK集計終了日 = Me![終了日] 先頭 = Format(WK集計開始日, "GGGEE\年MM\月DD\日") 後方 = Format(WK集計終了日, "GGGEE\年MM\月DD\日") OutFlName = "C:\ACDB\" & 先頭 & "から" & 後方 & "間の日報データ.xls" Response = MsgBox(WK集計開始日 & "から" & WK集計終了日 & "までの日報データをエクセルに出力します。", vbInformation + vbYesNo, "日報データ出力") If Response = vbYes Then DoCmd.OutputTo acOutputQuery, "NWKQ_日報一覧", acFormatXLS, OutFlName, True '," On Error GoTo 0 MsgBox "データの出力が完了しました。", vbInformation + vbOKOnly, "出力完了" On Error Resume Next Else MsgBox "出力を中止します。", vbExclamation + vbOKOnly, "出力中止" Exit Sub End If DoCmd.Close acForm, Me.Name End Sub というプログラムを組んでいます。格納先をC:\ACDB\currentにしたいのですが、OutFlName = "C:\ACDB\" & 先頭 & "から" & 後方 & "間の日報データ.xls"を"C:\ACDB\current" &~ に変更すると、C:\ACDB直下でcurrent先頭~のファイル名で保存されます。 これを上手くC:\ACDB\currentへ保存できる方法はないでしょうか。

  • 【Access VBAからExcelを閉じたい】

    【Access VBAからExcelを閉じたい】 以下のコマンドを書いて、 クエリ結果をExcelに貼りつけました。 ですが、Excelを保存して閉じることができず、、、。 (自動起動・終了を目的としています) 具体的には、 objApp.Save を実行すると、 『この場所に"RESUME.XLW"という名前のファイルが既にあります。置き換えますか?』 とメッセージボックスが出てきます。 何もメッセージを出さずに、上書き保存→Excelを閉じるには、どのように書けばよろしいでしょうか? 以下ソース - - - - - - - - - - - - - - - - Private Sub XLS_Paste_1() On Error GoTo Err_XLS_Paste_1 Dim DB As DAO.Database Dim RS As DAO.Recordset Dim objApp As Object Dim ExeName As String Dim SheetName As String ExeName = "\\FileServer01\Share\Excel_Base.xls" SheetName = "Report" Set DB = CurrentDb Set RS = DB.OpenRecordset("qry_sel_DAILY_DATA") On Error Resume Next Set objApp = CreateObject("Excel.Application") '変数にExcelオブジェクトを格納 objApp.Visible = True 'Excelを画面に表示させる With OBJEXE objApp.Workbooks.Open (ExeName) With objApp.Sheets(SheetName) .Range("B53:G83").ClearContents '転記エリアのクリア .Cells(53, 2).CopyFromRecordset RS 'B53基準で出力 End With objApp.Visible = True objApp.Save objApp.Quit Set objApp = Nothing Set RS = Nothing Set DB = Nothing Set OBJEXE = Nothing Exit Sub End With Exit_XLS_Paste_1: Exit Sub Err_XLS_Paste_1: MsgBox Err.Description Resume Exit_XLS_Paste_1 End Sub

  • エクセルVBA アクセスにインポート

    エクセルのデータ(列数、行タイトルは都度かわる)をアクセスにインポートしテーブルを作成したいと思っています。 VBAでこの処理をおこないたく、下記のコードで実行したのですがデバッグがはしってしまいます。 (DとEでデバッグ) 原因がお分かりになる方がおりましたら、教えていただけますでしょうか? 何卒、よろしくお願い申し上げます。 Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String varac = "T_TESTTABLE" ' --- A varxls = "C:\Users\AC\Desktop\ACTEST\RAWDATA.xlsx" ' ---B strrange = "TEST_RAWDATA" ' --- C strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" DoCmd.DeleteObject acTable, varac ' --- D If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange ' -- E MsgBox "データ入力は、正常に完了しました。" End If Exit Function エラー: MsgBox "予期せぬエラーが発生しました。" & Chr(13) & _ "エラー番号:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbCritical Exit Function End Function

  • VB6からエクセル操作

    VB6でエクセルを開き、ある処理をして、 名前を付けて保存ダイアログを出して保存したいのですが、 名前を付けて保存ダイアログを出すところがうまくいきません。 Dim app As Excel.Application Dim book As Excel.Workbook Dim sheet As Excel.Workshee Set app = CreateObject("Excel.Application") app.Visible = True Set book = app.Workbooks.Open("c:\test.csv") 'ファイルを開く Set sheet = book.Worksheets(1) sheet.Columns("B:D").Delete Shift:=xlToLeft sheet.Columns("C:D").Delete Shift:=xlToLeft sheet.Rows("1:7").Delete Shift:=xlUp ここで、名前を付けて保存ダイアログを出して、ファイルを保存したい。

  • オブジェクトが必要です・・・・・

    オブジェクトが必要です・・・・・ すみません、判りません、丸投げです(爆)、申し訳ありませんがどなたか完成していただけませんか?;; また、この辺りをサルでも判るように解説してくれていて勉強し易いサイトがあったら教えてください・・・ Private Sub コマンド1_Click() Dim xlsApp As Excel.Application Dim xlsBook As Excel.Workbook Dim xlsSht As Excel.Worksheet Set xlsApp = CreateObject("Excel.Application") Set xlsBook = xlsApp.Workbooks.Open("■■■■■.xls") Set xlsSht = xlsWkb.Sheets(■■■■) If xlsBook.ReadOnly Then xlsBook.Close MsgBox "そのファイルは既に開かれています。" xlsApp.Quit Else xlsBook.Close End If Set wkb = Nothing: Set xls = Nothing Exit_exOpenEditC: Exit Sub Err_exOpenEditC: MsgBox Err.Number & " - " & Err.Description Resume Exit_exOpenEditC End Sub accessからexcelファイルをシートを指定して開き、重複の場合は開かない様にし、メッセージボックスを表示させたいのです・・・