dポイントプレゼントキャンペーン実施中!

すみません教えてください。

 収支会計.XLSの売上台帳のシートを別ファイル確定申告2.xlsの売上作業範囲シートに貼り付けたく自動マクロを記録したのですが、いまいち動きがぎこちなく重く何とかスムーズに出来ないでしょうか?

Sub 売り上げ書き込み()
'
' 売り上げ書き込み Macro
' Range("A2:F251").Select
Selection.Delete Shift:=xlUp
Application.Left = 20.8
Application.Top = 34
Windows("収支会計.XLS").Activate
With ActiveWindow
.Top = 3.4
.Left = 9.4
End With
Sheets("売上台帳").Select
ActiveWindow.SmallScroll Down:=-55
ActiveWindow.ScrollRow = 1
With ActiveWindow
.Top = 87.4
.Left = 37
End With
Range("D5:H1004").Select
Selection.Copy
Windows("確定申告2.xls").Activate
Range("B2").Select
ActiveSheet.Paste
Range("A2").Select
Windows("収支会計.XLS").Activate
Range("C5:C430").Select
Application.CutCopyMode = False
Selection.Copy
Windows("確定申告2.xls").Activate
ActiveSheet.Paste
Range("H8").Select
End Sub

宜しくお願いします。

A 回答 (3件)

こんにちは。



別に問題ないですよ。

実行時エラー 9
インデックスが有効範囲にありません。

はこの場合「そんなシートは無い」を意味しますので、シート名の指定が間違っているのでしょう。

売上台帳作業範囲(2)
売上台帳作業範囲(2)
売上台帳作業範囲(2)
売上台帳作業範囲 (2)

上記は似ていても全部違います。
シートタブで右クリックし、名前の変更で選択状態にしてから Ctrl + Cキー でコピーし、VBE画面で Ctrl + Vキーで貼付けしてみては?

Workbooks("収支会計.XLS").Sheets("売上台帳").Range("D5:H1004").Copy _
Destination:=Workbooks("確定申告2.xls").Sheets("売上台帳作業範囲(2)").Range("B2")
    • good
    • 0
この回答へのお礼

再度 ご指導ありがとうございました

Ctrl + Cキー でコピーし、VBE画面で Ctrl + Vキーで貼付けしてみては? は気がつきませんでした。
実は右クリツクでコピーが出来ないのであきらめて、
仕方が無いので 自動マクロでシート名書き出し コピーペーストしました。

F8とも いらない構文を削除しすっきりしました。
早速他のファイルの同じような部分直してみました。

無事解決しましたが、これはかなりの知識が要りそうですね。

お礼日時:2002/10/16 23:40

はじめまして。


私でよろしければ、さほど難しくないようですのであなた様がおやりになりたいことが自動でできるマクロを作ってみたいと思います。
もしご希望の節は、あなた様のおやりになりたいことを具体的に詳しくお知らせ下さい。
お手数をおかけいたします。よろしくお願いいたします。
    • good
    • 0
この回答へのお礼

早々 ご回答ありがとうございます。
ANO。#1の方の方法でとりあえず解決しました。
いずれにしても
日ごろあまに踏み込まない分野なので未知数が多く
少し勉強しながらやってみたいと思います。

ネット上で参考になるところがありましたら情報をお願いします。

お礼日時:2002/10/16 10:27

こんにちは。



自動記録は不要なコードも吐出します。、
ほぼやった通りの順番に記述されているだけですから、少しご自分でも考えて見ると上達しますよ。

例えば、

Application.Left = 20.8 はアプリケーションを左に20.8
ActiveWindow.SmallScroll Down:=-55 はアクティブウィンドウを-55スクロール

こんな記述はいらないと解かるでしょう。

VBEウィンドウとExcelウィンドウを並べて、デバック-ステップインでF8キーを押して行くと動作を見ながら確認出来ますよ。

ちなみに手っ取り早いのは、先頭に Application.ScreenUpdating = False を入れるだけです。

あと、下は改良版です。
お望みの動作になるかは不明なので、テスト環境でどうぞ。

Sub 売り上げ書き込み()
'
' 売り上げ書き込み Macro
' Range("A2:F251").Select
'Selection.Delete Shift:=xlUp

 Application.ScreenUpdating = False

 Workbooks("収支会計.XLS").Sheets("売上台帳").Range("D5:H1004").Copy _
  Destination:=Workbooks("確定申告2.xls").ActiveSheet.Range("B2")

 Workbooks("収支会計.XLS").Sheets("売上台帳").Range("C5:C430").Copy _
  Destination:=Workbooks("確定申告2.xls").ActiveSheet.Range("A2")

 Application.CutCopyMode = False
 Range("H8").Select

End Sub

この回答への補足

早々ご回答 ありがとうございます。
Workbooks("収支会計.XLS").Sheets("売上台帳").Range("D5:H1004").Copy _
  Destination:=Workbooks("確定申告2.xls").ActiveSheet.Range("B2")

貼り付け場所をActiveSheetではなくて

Workbooks("確定申告2.xls").Sheets("売上台帳作業範囲(2)")としたいのですが 構文が変わってしまうでしょうか? エラー 9が出てしまいます。
すみませんが 宜しくご指導お願いします。

補足日時:2002/10/16 10:37
    • good
    • 0
この回答へのお礼

早々 ご回答ありがとうございます。
さっそくやったところ、スムーズになりました。
ありがとうございます。日ごろあまに踏み込まない分野なので未知数が多く今後もよろしくお願いします

お礼日時:2002/10/16 10:24

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