アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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
    • good
    • 0

すみません。

#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

と必ずインスタンスを明示しなければなりません。ご参考までに。
    • good
    • 1

下記の記述をイベントに



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番目の位置に移動します。

ちなみにシートの並び替えも出来ます。
    • good
    • 0

こんばんは



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

というのはいかがですか?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A