2012年3月7日水曜日

Excelを操作する

    'エクセルのインスタンス
    Set Xl = CreateObject("Excel.Application")
    Set Bk = Xl.Workbooks.Open(<xlsのフルパス>)
    Set Sh = Bk.worksheets(<シート名>)       'テンプレートシート
    '名前を付けて保存
    Bk.worksheets("表紙").Select    '複数シートが存在の場合、初期表示したいシート名-->シートオブジェクトを用意しなかったから。
    Bk.SaveAs filename:=<ファイル名.xls>    'ファイル名までのパスは不要
    Bk.Close
    'オブジェクトの解放
    Set Sh = Nothing
    Set Bk = Nothing
    Set Xl = Nothing
- 代入・コピペ・式---------------------------------------------------------------------
    Sh.Select 'シートが複数の場合、特定のシートをアクティブにする
    Sh.Range("a1").Select   'シートの指定のセルにカーソルを置く
    '指定のレンジに値を代入する。 
    Sh.Range("B10") = RsCover!BknName     '工事件名
    Sh.Range("B11") = RsCover!UkeBasho    '受渡場所
    Sh.Range("B12") = RsCover!KokiKenshu  '工期・検収日
    Sh.Range("B13") = RsCover!ShihaJoken  '支払条件
    '連続代入
    Do Until RsMeis.EOF
        Sh.Range("A" & iLine) = RsMeis("TekyName1")
        Sh.Range("B" & iLine) = RsMeis("TekyName2")
        Sh.Range("C" & iLine) = RsMeis("Suryo")
        Sh.Range("D" & iLine) = RsMeis("TaniName")
        Sh.Range("E" & iLine) = RsMeis("Tanka")
        Sh.Range("F" & iLine) = RsMeis("Kingaku")
        Sh.Range("G" & iLine) = RsMeis("Bikou")
        iLine = iLine + 1
        RsMeis.MoveNext
    Loop
 '計算式の設定
    Shiki = "=Sum(F" & iLine & ":F" & iLine - 1 + vBody & ")"
    Sh.range("F" & ShikiLine).formula = Shiki
    Sh.range("A" & UchiLine).formula = "='シート名'!レンジ名 '他シートのセルを参照させる
    '--- 横幅の設定(コピー&ペースト)-----
    ShT.Select
    ShT.Columns("A:G").Select
    Xl.Selection.Copy
    Sh.Select
    Sh.Columns("A:A").Select
    Sh.Paste
    '行情報文字のクリア
    ShT.Columns(sCol & ":" & sCol).Select
    Xl.Selection.ClearContents