[リストへもどる]
一括表示

投稿時間:2003/07/25(Fri) 17:17
投稿者名:瀬名
Eメール:
URL :
タイトル:
EXCELのシートのコピー
0.前準備としてExcelで帳票の雛型を作成しておく。
1.VBよりExcelを起動し、雛型のsheetをcopyする
2.copyしたシートの名前を変更する

上記の作業をloopで回してやりたいのですがどのようにしたら良いのでしょうか? 
ご教授お願いします。

投稿時間:2003/07/25(Fri) 18:26
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: EXCELのシートのコピー
左のフレームのExcel&Word関係の
VBからExcel及びWordを操作する時の注意事項(最初に必ずお読み下さい)の中の
青色で書いてある部分を見て下さい。

ここでExcel関係の質問をされる場合、[Excel&Word関係]には目を通しておいて
下さい。(同様の文書が他にも記入しています)
比較的簡単なことは、ここには掲載していませんので、そういった方法で実行して下さい。
又、過去ログにも結構同じ質問や回答がありますので、事前に検索して調べて下さい。

投稿時間:2003/07/29(Tue) 17:39
投稿者名:瀬名
Eメール:
URL :
タイトル:
Re^2: EXCELのシートのコピー
こんにちは
花ちゃんさんの仰られた事は一通りやってみたのですが
今度は、エクセルが正常終了せずメモリに残ってしまいます。
この件もいろいろ調べてみたのですがお手上げです・・・(>_<)

以下にコードを記述しておきますのでよろしかったらご教授ください。

Private Function fncOutputExcelFile() As Boolean
Dim xlApp           As Excel.Application
Dim xlBook          As Excel.Workbook
Dim xlSheet         As Excel.Worksheet
Dim sFileName       As String
On Error GoTo fncOutputExcelFile_Error:
    fncOutputExcelFile = False    
    If fncnExcel_Start(xlApp) = False Then
        Exit Function  
        MsgBox "【Excel】の起動に失敗しました。", vbInformation, Me.Caption
    End If
    sFileName = "C:\TEST.XLS"
    Set xlBook = xlApp.Workbooks.Open(sFileName)
    FOR i = 1 to 10            
        Set xlSheet = xlBook.Sheets("原紙")
        xlSheet.Select
        xlSheet.Copy After:=Sheets(2)
        Set xlSheet = Nothing
        Set xlSheet = xlBook.Sheets("原紙 (2)")
        xlSheet.Select
        xlSheet.Name = i

        With xlApp.ActiveSheet
            .Cells(1, 1) = "TESTTESTTESTTESTTESTTESTTESTTESTTEST"
        End With
        Set xlSheet = Nothing
    NEXT i
    xlBook.Save

    '∽∽∽∽∽ <<【Excel】の編集を終了します>> ∽∽∽∽∽
    Call fncbExcel_End(xlApp, xlBook)
    
    fncOutputExcelFile = True
    
fncOutputExcelFile_Exit:
    Exit Function
fncOutputExcelFile_Error:
    MsgBox Err.Number & " " + Err.Description, _
           vbExclamation, _
           Me.Caption
    Call fncbExcel_End(xlApp, xlBook)
End Function

Private Function fncnExcel_Start(objExcelObject As Object) As Boolean
    fncnExcel_Start = False
    Set objExcelObject = Nothing
    Set objExcelObject = New Excel.Application
    objExcelObject.Application.WindowState = xlMinimized
    objExcelObject.Application.Visible = False
    fncnExcel_Start = True
End Function

Private Function fncbExcel_End(objExcelObject As Object, objExcelBook As Object) As Boolean
Dim bAlerts As Boolean
    fncbExcel_End = False
    bAlerts = objExcelObject.DisplayAlerts
    objExcelObject.DisplayAlerts = False
    objExcelBook.Close SaveChanges:=True
    objExcelObject.DisplayAlerts = bAlerts
    objExcelObject.Application.Quit
    Set objExcelBook = Nothing
    Set objExcelObject = Nothing
    fncbExcel_End = True
End Function

投稿時間:2003/07/29(Tue) 20:17
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: EXCELのシートのコピー
ここの VBからExcel及びWordを操作する時の注意事項(最初に必ずお読み下さい)や
Excel のタスクを正常に終了できない現象(こちらも合せてお読み下さい)を参考に
間違いがないか1行づつ調べて下さい。
(間違い探しは、決して難しい事ではありません。ただ、面倒なだけです。)

又下記を参考にインスタンスを解放しているか調べて下さい。
http://www.gj.il24.net/~nakasima/vb/tech/Nothing/

それとこういった場合、投稿されるコードは現象が再現(誰にでも)できる
コードを投稿した頂いた方がいいかと思います。
関数だけ投稿して頂いてもその使い方に問題があったり、投稿していない
部分のコードに問題がある場合もありますし、使用されているデータに問題
がある場合もあるかと思います。
又、現象が再現できる最低限のコード(問題ない部分をコメントアウトした)を
作成することによって原因が究明できるかと思います。