• ベストアンサー

アクセスからエクセルのシートを追加して、名前をつける方法

アクセス2000で、ある所定の条件を満たした時に、規定の場所にあるエクセルファイルの先頭から2番目に空のワークシートを追加し、そのシート名を変数に格納されている値でリネームしようとしております。結構急務なんですが、excel.application~等使っても出来ませんでした・・・。プロフェッショナルな方、誰か方法を教えていただけないでしょうか?よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.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 = 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)
回答No.4

すみません。#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)
回答No.3

下記の記述をイベントに 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)
回答No.1

こんばんは 多分 シートの並び替え、途中の挿入は出来なかったと思います。 新たなExcelファイルを作成し、シートをコピーして、該当の条件を満たしたとき2番目にシートを作成し、3番目以降となるシートを元Excelから貼り付ける というのはいかがですか?

関連するQ&A