2009-08-03 15 views
1

私はアクセスでコードのいくつかのモジュールを実行しており、データを Excelに書き込んでいます。私が最初に書く時、データは正しく書き込まれます。しかし、もう一度 しようとすると、新しいデータが古いデータの上に書き込まれます。新しいシートを挿入するにはどうすればよいですか? VBAにアクセスExcelに新しいシートを追加するには?

私の既存のコードは、私は次のコードは、あなたが望む何をすべきだと思う

Dim objexcel As Excel.Application 
Dim wbexcel As Excel.Workbook 
Dim wbExists As Boolean 
Dim objSht As Excel.Worksheet 
Dim objRange As Excel.Range          
Set objexcel = CreateObject("excel.Application") 
On Error GoTo Openwb 
wbExists = False 
Set wbexcel = objexcel.Workbooks.Open("C:\REPORT1.xls") 
Set objSht = wbexcel.Worksheets("Sheet1") 
objSht.Activate 
wbExists = True 

Openwb:    
On Error GoTo 0 
If Not wbExists Then 
    objexcel.Workbooks.Add 
    Set wbexcel = objexcel.ActiveWorkbook 
    Set objSht = wbexcel.Worksheets("Sheet1") 
End If 
+0

はいシート1にデータが入力されている場合は、シート2にデータが入力された場合はシート2に移動してからシート3に移動するなどとなります。 – tksy

答えて

3

です。 .Addメソッドからの戻り値を使用して必要なオブジェクトを取得する点を除いて、あなたと非常によく似ています。

Public Sub YourSub() 
    Dim objexcel As Excel.Application 
    Dim wbexcel As Excel.Workbook 
    Dim wbExists As Boolean 
    Set objexcel = CreateObject("excel.Application") 

    'This is a bad way of handling errors. We should' 
    'instead check for the file existing, having correct' 
    'permissions, and so on, and actually stop the process' 
    'if an unexpected error occurs.' 
    On Error GoTo Openwb 
    wbExists = False 
    Set wbexcel = objexcel.Workbooks.Open("C:\REPORT1.xls") 
    wbExists = True 

Openwb: 
    On Error GoTo 0 
    If Not wbExists Then 
     Set wbexcel = objexcel.Workbooks.Add() 
    End If 

    CopyToWorkbook wbexcel 
EndSub 

Private Sub CopyToWorkbook(objWorkbook As Excel.Workbook) 
    Dim newWorksheet As Excel.Worksheet 
    set newWorksheet = objWorkbook.Worksheets.Add() 

    'Copy stuff to the worksheet here' 
End Sub 
+0

これは今でも同じ機能を実行しています。私が反復してコードデータを実行すると、シート1にコピーされるだけです – tksy

+0

ああ、申し訳ありません - 私はあなたの質問を正しく読まなかった。これを試して。 – Ant

+1

質問に関連する部分が正しいので、私はあなたの答えを投票しませんが、コードのブロックについてOn Error Resume Nextと次にError GoTo 0を使うのは非常に悪いことです。無視するのが安全であることがわかっていると予想されるエラーがある場合は、そのエラーをスローするエラーハンドラを作成します。そうしないと、破棄すべきではない重大なエラーを無視する危険性があります。 –

関連する問題