• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:オブジェクトが必要です・・・・・)

オブジェクトが必要な操作をExcel VBAで実行する方法

bonaronの回答

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> Set xlsBook = xlsApp.Workbooks.Open("■■■■■.xls") > Set xlsSht = xlsWkb.Sheets(■■■■) xlsWkb は 上の行で開いたブックのオブジェクト変数 xlsBook の間違いでしょう。

kisara-gi
質問者

お礼

すみません、勘違いでした インデックスが有効範囲内に無い > シート名が無い > シート名を間違えていた "でシート名を囲うのを忘れていましたorz お答え頂いたとおりにしたところ、エラーは出ないのですが、 excelファイルが開きませんでした 正確には、タスクのプロセスには一瞬EXCELの文字が表示されるのですが、 直ぐに閉じているようです、どうしたら良いでしょうか 引き続きよろしくお願いします また、お分かりの方がいらっしゃいましたらご教授下さい・・・

kisara-gi
質問者

補足

『xlsWkbをbookに置き換えてSet xlsSht = xlsBook.Sheets(■■■■)にする』 と言うお答えでよろしいでしょうか? 今度は「インデックスが有効範囲内にありません」と言うエラーになってしまいました・・・ 引き続きご教授お願いいたします::

関連するQ&A

  • VB6.0 Excel 同シートで毎回改行して書き込む方法

    こんにちは。VB6.0(SP5)、Excel2003、WindowsXPでVBの勉強をしています。 現在、VBでコマンドボタンを押した時に、Excelに押した時の時間を書き込むプログラムを作成しています。 一応プログラムを組むことができたのですが、再びコマンドボタンを押すと2回目以降書き込んだ時間を上書きするものです。 コマンドボタンを押した時、時間の書き込みを毎回次の行で行うプログラムを組みたいと思っています。 毎回改行して書き込むためには、どのようにプログラムを書くと良いでしょうか? ご指導よろしくお願いします。 組んだプログラムを下記に記します。 Private Sub Command1_Click() Dim xlsApp As Object Dim xlsBook As Object Dim xlsSheet As Object On Error Resume Next Set xlsApp = GetObject(, "Excel.Application") Set xlsBook = xlsApp.ActiveWorkbook Set xlsSheet = xlsBook.Sheets.Add If Err.Number <> 0 Then Set xlsBook = xlsApp.Workbooks.Add Set xlsSheet = xlsBook.ActiveSheet End If Call Excel(xlsBook, xlsSheet) Set xlsSheet = Nothing Set xlsBook = Nothing Set xlsApp = Nothing On Error GoTo 0 End Sub Private Sub Excel(xlsBook As Object, xlsSheet As Object) Dim hh As Single Dim mm As Single Dim ss As Single xlsSheet.Range("A1") = Format(Time, "hh:mm:ss") End Sub

  • マクロFind検索で見つからなかった時の対処

    エクセル2013です 以下のコードを作成しましたが .Rowが色で塗られ 「型が違います」でERRになります。 .Columnの方はERRでなく なぜ.Rowの方がERRなのでしょうか? よろしくお願いします。 Dim 検索行番号 As Range Dim 判定列番号 As Range Dim 検索列番号1 As Range Dim 検索列番号2 As Range Set 検索行番号 = Rows(1).Find("みかん").Column If 検索行番号 Is Nothing Then MsgBox "みかんが有りません。" End If Exit Sub Set 判定列番号 = Rows(1).Find("りんご").Column If 判定列番号 Is Nothing Then MsgBox "りんごが有りません。" End If Exit Sub Set 検索列番号1 = Range("B:B").Find("大箱").Row If 検索列番号1 Is Nothing Then MsgBox "大箱が有りません。" End If Exit Sub Set 検索列番号2 = Range("B:B").Find("小箱").Row If 検索列番号2 Is Nothing Then MsgBox "小箱が有りません。" End If Exit Sub

  • AccessでExcelのプロセスが消せない

    Access2007を使用してExcelへ出力するプログラムを作っております。 On Error時にExcelのプロセスが消せなくて困っています。 正常に終了した場合は消えているのですが、On Error時には消せないと言うのはなぜでしょう? どなたか教えてください! ロジックは以下の通りです。 Dim xls, Book, newSheet As Object Private Sub cmd02_Click() On Error GoTo Err_cmd02_Click '処理A '処理B '処理C 'ExcelFile出力 Call ExcelOut Exit_cmd02_Click: Exit Sub Err_cmd02_Click: MsgBox ERR.Description 'ExcelがOpenしているかの判断 If bolExcelFlag = True Then 'Open中だったらClose Set newSheet = Nothing Book.Close SaveChanges:=False Set Book = Nothing xls.Quit Set xls = Nothing End If Resume Exit_cmd02_Click End Sub Private Sub ExcelOut() 'Excelオブジェクト作成 Set xls = CreateObject("Excel.Application") '新しいブックを追加 Set Book = xls.Workbooks.Add '新しいシートを追加 Set newSheet = Book.Worksheets(1) 'ExcelFlagをOn bolExcelFlag = True 'ヘッダー出力 Call HeaderOut 'ExcelFile編集メイン Call MainOut '最終のSub Total編集 Call BreakOut 'フッター出力 Call FooterOut 'ファイルの保存 Book.SaveAs (strOutFileName) '各オブジェクトのClose Book.Close xls.Quit Set newSheet = Nothing Set Book = Nothing Set xls = Nothing 'ExcelFlagをOff bolExcelFlag = False End Sub 以上、よろしくお願いいたします。

  • VBで既存エクセルシートを新規ブックにコピー

    VB6,Excel2003です。 既存のエクセルシートを新規ブックにコピーする プログラムを作成してみましたが タスクバーに新規ブックのタスクバーボタンが2つできてしまいます。 どこが原因か教えてください。よろしくお願いします。 Private Sub Command1_Click() Dim xlsApp As Excel.Application Dim xlsBookTemp As Excel.Workbook 'コピー元ブック Dim xlsBookCopy As Excel.Workbook 'コピー先ブック Dim xlsSheetTemp As Excel.Worksheet 'コピー元シート Dim xlsSheetCopy As Excel.Worksheet 'コピー先シート Set xlsApp = CreateObject("Excel.Application") Set xlsBookTemp = xlsApp.Workbooks.Open("C:\Temp.xls") Set xlsSheetTemp = xlsBookTemp.Sheets(1) Set xlsBookCopy = xlsApp.Workbooks.Add Set xlsSheetCopy = xlsBookCopy.Sheets(1) xlsApp.Visible = True 'コピー元のSheet1を新規ブックにコピーする xlsSheetTemp.Copy Before:=xlsSheetCopy 'コピー元のブックは閉じる xlsBookTemp.Close '///新規ブックの編集処理/// Set xlsSheetTemp = Nothing Set xlsBookTemp = Nothing Set xlsSheetCopy = Nothing Set xlsBookCopy = Nothing Set xlsApp = Nothing End Sub

  • 【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

  • 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 VBA クエリ結果をExcelに貼り付けたい】

    【Access VBA クエリ結果をExcelに貼り付けたい】 以下のコマンドを書いて、 クエリ結果を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.DisplayAlerts = False objApp.Save objApp.DisplayAlerts = True 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

  • エクセルの二重起動をやめたい

    VBからエクセルを起動する際、すでに開いているファイルは開かないようにしたく、検索をした結果 http://oshiete1.goo.ne.jp/kotaeru.php3?q=237618 の回答があり参考にしたのですが、うまくいきません。 はじめは   Dim xlsApp As Excel.Application   Dim xlsBook As Excel.Workbook がうまくいかず悩んだのですが、「オブジェクト」-「参照設定」でエクセルを選択することによって解決しましたが、   For Each xlsBook In xlsApp.Workbooks     '見つかったらループを抜ける     If StrComp(xlsBook.FullName, findBookPath, vbTextCompare) = 0 Then     Exit For    End If   Next xlsBook の部分で上手く引っ掛けることができません。 なにか設定が足りないのか? どなたか分かる方がみえましたらよろしくお願いいたします。 では

  • Excelにおけるセルの値をVB2005に配列として取り込みたい

    Excelのセルの値をVB2005に配列として取り込みたいのですが、Excel.Rangeと配列の整合性が取れず困っています。 なんらかヒントになるような助言をお願いします。 以下は今までに作成中のコードです。 Public Class Form1 Dim xlsapp As New Excel.Application Dim xlsbook As Excel.Workbook Dim xlssheet As Excel.Worksheet Dim fn As String = "sample.xls" Dim Q(,,) As Double Dim i, j, x, y, z As Integer Dim k As Double Dim w(i), v(i), u(i) As Double Dim As Object Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click xlsbook = xlsapp.Workbooks.Open(fn) xlssheet = xlsbook.Worksheets(1) k = 1 w(i) = xlssheet.Cells(1, 3) v(i) = xlssheet.Cells(1, 2) u(i) = xlssheet.Cells(1, 1) For x = 2 To 11 If w(i) = 1 Then For y = 2 To 11 If v(i) = 1 Then Q(1, 1, k) = u(i) k = k + 1 End If Next End If Next z = k For k = 1 To z TextBox1.Text = Q(1, 1, k) Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() xlsapp.DisplayAlerts = False xlssheet = Nothing xlsbook.Close() xlsbook = Nothing xlsapp.Quit() xlsapp = Nothing End Sub End Class

  • VBAのキャンセル処理

    下記のVBAでファイルを出力することはできるようになったのですが、 出力するときに[キャンセル]を押しても"MsgBox :Excelファイルへの出力が完了しました。"が表示されてしまいます。 「キャンセル」した場合は、このメッセージが表示されないようにできないでしょうか? Private Sub Image_Export_Click() On Error GoTo Err_FileDialog_Click 'ファイル出力 Dim strFileName As String Dim ExpFileName As String ExpFileName = "T_master_" & Format(Now(), "yyyymmdd") strFileName = GetFileName(False, "MicrosoftExcel ブック (*.xls)|*.xls", "", ExpFileName & ".xls") If Len(strFileName) = 0 Then 'キャンセルボタンが押されたときの処理を記述 MsgBox "キャンセルが押されました。" Else DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "T_master", strFileName & ".xls", True End If MsgBox "Excelファイルへの出力が完了しました。", , "出力完了" Exit_FileDialog_Click: Exit Sub Err_FileDialog_Click: MsgBox "予期せぬエラーが発生しました" & Chr(13) & _ "エラーナンバー:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbOKOnly End Resume Exit_FileDialog_Click End Sub