[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/08/24(Thu) 09:52
投稿者名:moyacchi
Eメール:
URL :
タイトル:
Excelでの既存シートのコピー
いつも参照させていただいております。
VBとExcelの連動で困っていますので助けていただけないでしょうか?

既存のbook1のsheet1の1行目から41行目までをコピーして42行目に貼付てbook2に別名保存
したいのですがうまくいきません。現在は以下のようにしています。

    Dim xlApp                   As Excel.Application
    Dim xlBook                  As Excel.Workbook
    Dim xlSheet                 As Excel.Worksheet
    
    
    
    'book2の確認
    MyFile = Dir$("C:\book2.xls")
    If Len(MyFile) > 1 Then
       '既存のbook2を削除する
        Kill "C:\book2.xls"
    Else
    End If
    
    'book1の取込
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(App.Path & "\book1.xls")
    Set xlSheet = xlBook.Worksheets(1)
    
    '1行目から41行目をコピーして
    xlSheet.Rows("1:41").Select
    xlSheet.Copy
    
    '42行にペースト
    xlSheet.Rows("42:42").Select
    xlSheet.Paste
    
    'Cドライブ直下に保存の場合
    xlApp.DisplayAlerts = False
    xlSheet.SaveAs "C:\book2.xls"
    
    xlBook.Close True

    xlApp.Quit
    'オブジェクトを解放
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing

ペースト部分でエラーが発生してしまいます。どのような命令を付け加えればいいのでしょうか
?教えて下さい。
    

投稿時間:2006/08/24(Thu) 10:27
投稿者名:いもーに
Eメール:
URL :
タイトル:
Re: Excelでの既存シートのコピー
どのようなエラーが発生するのか書いた方が良いと思いますよ。

Excelのマクロを記録してみましたが以下のようになります。

    Rows("6:17").Select
    Selection.Copy
    Rows("18:18").Select
    ActiveSheet.Paste

コピーとペーストの部分を変更してもダメでしょうか?

>     '1行目から41行目をコピーして
>     xlSheet.Rows("1:41").Select
>     xlSheet.Copy
>    
>     '42行にペースト
>     xlSheet.Rows("42:42").Select
>     xlSheet.Paste

投稿時間:2006/08/24(Thu) 10:55
投稿者名:moyacchi
Eメール:
URL :
タイトル:
Re^2: Excelでの既存シートのコピー
返事ありがとうございます。
いもーにさんのほうほうだといけました。
おかしいと思って変更していましたがエクセルマクロをそのまますればいいのですね。
私もエクセルマクロまではしたのですがVBに書き込む段階でいろいろ変更していましたので・・・

本当にありがとうございます。
今後も利用することがありますのでまたよろしくお願いします。

投稿時間:2006/08/24(Thu) 10:54
投稿者名:YK
Eメール:
URL :
タイトル:
Re: Excelでの既存シートのコピー
こんにちは。

> 既存のbook1のsheet1の1行目から41行目までをコピーして42行目に貼付てbook2に別名保

> したいのですがうまくいきません。現在は以下のようにしています。
>
>    
>     '1行目から41行目をコピーして
>     xlSheet.Rows("1:41").Select
>     xlSheet.Copy
>    
>     '42行にペースト
>     xlSheet.Rows("42:42").Select
>     xlSheet.Paste
    

xlSheet.Rows("1:41").Copy Destination:=xlSheet.Rows(42)
でどうでしょうか。

投稿時間:2006/08/24(Thu) 11:05
投稿者名:moyacchi
Eメール:
URL :
タイトル:
Re^2: Excelでの既存シートのコピー
ありがとうございます。
いろいろと方法があるものですね。YKさん、ありがとうございます。
VBはよく使っているのですがExcelを使うのははじめてでしたので助かります。
ありがとうございました。