- ベストアンサー
アクセスからエクセルのシートを追加して、名前をつける方法
アクセス2000で、ある所定の条件を満たした時に、規定の場所にあるエクセルファイルの先頭から2番目に空のワークシートを追加し、そのシート名を変数に格納されている値でリネームしようとしております。結構急務なんですが、excel.application~等使っても出来ませんでした・・・。プロフェッショナルな方、誰か方法を教えていただけないでしょうか?よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 急ぎということで、取り急ぎで作ったコードです。目的の処理以外は一切おこなっていませんので、カスタマイズしてください。 また、処理速度の点で実行時バインドではなく、参照設定を予め行って下さい。 Option Compare Database '要参照設定:Microsft Excel x.x Object Library Sub AddXLWorksheet() Dim xlApp As Excel.Application Dim WB As Excel.Workbook Dim SH As Excel.Worksheet Dim strXLfile as stirng strXLfile = "C:\TEST.xls" 'Excelブックフルパス Set xlApp = Excel.Application With xlApp .Visible = True Set WB = .Workbooks.Open(strXLfile) 'シートを3番目に追加 Set SH = .Worksheets.Add(After:=WB.Worksheets(2)) 'シート命名 SH.Name = "aaaaa" 'ここを変数で渡せば良い End With Set SH = Nothing Set WB = Nothing Set xlApp = Nothing End Sub
その他の回答 (3)
- KenKen_SP
- ベストアンサー率62% (785/1258)
すみません。#2 のコードを一部訂正し差し替えます。 Option Compare Database '要参照設定:Microsft Excel x.x Object Library Sub AddXLWorksheet() Dim xlApp As Excel.Application Dim WB As Excel.Workbook Dim SH As Excel.Worksheet Dim strXLfile as stirng strXLfile = "C:\TEST.xls" 'Excelブックフルパス Set xlApp = New Excel.Application With xlApp .Visible = True Set WB = .Workbooks.Open(strXLfile) 'シートを3番目に追加 Set SH = WB.Worksheets.Add(After:=WB.Worksheets(2)) 'シート命名 SH.Name = "aaaaa" 'ここを変数で渡せば良い End With 'ExcelをVBAで終了させるならコメント解除 'xlApp.Quit Set SH = Nothing Set WB = Nothing Set xlApp = Nothing End Sub #3 の方のコードについて補足ですが、、 Microsft Excel x.x Object Library の参照設定がされていると Sheets.Add など、通常の Excel VBA のコードのように書いてもエラーになりません。 しかし、これをやってしまうと、 objExcel.Quit としても Excel が終了しないでタスクが残ってしまいます。タスクマネージャーで確認してみて下さい。 実は、Excel への参照設定をおこなうと Global Application As New Excel.Application という変数が暗黙的に作成されます。 ここで注意が必要なのですが、インスタンスを明示しないで Excel の関数やオブジェクトを使ってしまうと、自動的に変数 Application に ”Excel のインスタンスへの参照が格納”されてしまい objExcel.Quit だけでは Excel が終了しないのです。 これを回避するためには、面倒でも objExcel.Sheets.Add と必ずインスタンスを明示しなければなりません。ご参考までに。
- O_cyan
- ベストアンサー率59% (745/1260)
下記の記述をイベントに Dim objExcel As Excel.Application Dim MyStName As String MyStName = "XXX" '"XXX"の代わりにここに格納されている変数の記述を Set objExcel = New Excel.Application objExcel.Workbooks.Open ("c:\フルパス\ファイル名.xls") '規定の場所のExcelファイルの指定 Sheets.Add 'ワークシートの挿入 ActiveSheet.Name = MyStName 'シート名の変更 Worksheets(MyStName).Move after:=Worksheets(1) '挿入されたシートを2番目に移動 objExcel.Quit Set objExcel = Nothing 新しいシートを挿入してシート名を変更後2番目の位置に移動します。 ちなみにシートの並び替えも出来ます。
- atyan
- ベストアンサー率10% (4/39)
こんばんは 多分 シートの並び替え、途中の挿入は出来なかったと思います。 新たなExcelファイルを作成し、シートをコピーして、該当の条件を満たしたとき2番目にシートを作成し、3番目以降となるシートを元Excelから貼り付ける というのはいかがですか?