[[20070725140629]] 『マクロ実行時のエラー』(うみ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ実行時のエラー』(うみ)

 いつもお世話になっております。
 下のようなマクロを走らせて、zukeiシートのF:AGを他のフォルダに入っているファイル
 全部にコピーしたいのですが、下の「ActiveSheet.Shapes.SelectAll」の所で「実行時
 エラー7 メモリが不足しています。」 というエラーメッセージがでてしまいます。
 フォルダに入っているファイルも、マクロのファイルも300KBくらいなので、メモリが
 不足していることは考えられません。原因がわからずに、困っております。
 どうぞよろしくお願い致します。

    MyFol = "C:\Mydocu\"  
    MyF = Dir(MyFol & "\" & "*.xls")
    Do While MyF <> ""
     Sheets("Zukei").Select

     Columns("F:AG").Select
     Selection.Copy

     Set MyBk = Workbooks.Open(MyFol & "\" & MyF)
     With MyBk
        Sheets("Tmp").Visible = True
        Sheets("Tmp").Select
        ActiveSheet.Shapes.SelectAll
        Selection.Delete

        Range("F1").Select
        ActiveSheet.Paste


 マクロは詳しくありませんが…。
 >Columns("F:AG").Select
 >Selection.Copy
 F:AG列には何が入っているのでしょうか?
 大量のコピーをしていますので、ココが怪しいのかな、と思いますが…。
 (gloomy)

 Select しないで書いたら?

 Set MyBk = Workbooks.Open(MyFol & "\" & MyF)
 ThisWorkbook.Sheets("Zueki").Columns("F:AG").Copy
 With MyBk.Sheets("Tmp")
      .Range("F1").PasteSpecial
      .Shapes.Delete
 End With

 とか
 (seiya)

 直接の回答ではありませんが、一つ誤解されているようなのでその点に関してのみ。

 >・・・のファイルも300KBくらいなので、メモリが不足していることは考えられません。
 と思われているようですが、メモリはファイルサイズだけあれば良いわけではありません。
 300KB のファイルを開くのにも数十Mの作業領域が必要な場合もありますし、開いた後に
 作業を行うことでもメモリを消費します。

 例えば、
     Sub aa()
            Dim bb(10000000)
     End Sub
 というコードを持ったファイルは サイズは15Kですが、これが実行されるときには
 200Mものメモリを消費します。

 タスクマネージャを開き、プロセスの EXCEL をみながら作業をしてみてください。
 VBE を開くだけでも数M増えますし、件のコードの
   Columns("F:AG").Select
   Selection.Copy
 が実行された瞬間にも、メモリ消費量が増大しているハズです。
 F:AG の内容によっては、本当にメモリが不足している可能性もありますので、
 一度タスクマネージャでタスクやパフォーマンスの情報を確認しながら作業をして
 みてはいかがでしょうか。
 (Mook)

 Copy したら、すぐに貼り付けてしまう(Clipboardを空にする)のが鉄則ですね.
 (seiya)

 皆様、ありがとうございます。おっしゃるようにタスクマネジャーのプロセスを見ましたら
 メモリ使用量がとんでもない数字になっておりました。ファイルの大きさだけでなく、作業
 でこんなにメモリを食うとは、大変勉強になりました。
 しかし、まだうまく走りません。seiya様のselectしないマクロを使ってみたのですが、
  .Range("F1").PasteSpecial
   .Shapes.Delete ←ここ!
 ここのところで「オブジェクトはこのプロパティ〜をサポートしていません」という
 エラー438がでてしまいます。
 また、この.Shapes.Deleteの代わりに、

  ActiveSheet.Shapes.SelectAll
  Selection.Delete

 を用いますと、SelectAllのところでまた「メモリ不足」エラーがでます。メモリを確認
 した所、そんなに大きな値ではないようなのですが・・・。シート内の図形を1つ削除
 したいだけなのですが、何かよい方法はありますでしょうか。(ただし、フォルダ内の
 ファイル毎に若干図形や場所が変わったりします。)
 どうぞよろしくお願い致します。
 (うみ)

 .Shapes(1).Delete
 では?
 (seiya)

 オートシェイプを全部消してよいなら、下記のようにしてもダメですか?
 Sub delAS()
    Dim objAS As Shape
    For Each objAS In ActiveSheet.Shapes
        objAS.Delete '-- 全部がダメなら一つずつ
    Next
 End Sub
 (Mook)

 ありがとうございました! seiya様の方法だと図形が選択されず、消されないままでした。(TT) Mook様の
 を利用させて頂いたならば、うまくいきました。
 ところで、最後にもう1つ質問させて下さい。seiya様の
 .Range("F1").PasteSpecial
 で、貼り付けはうまくいってるのですが、列幅が変わりません。コピー元の列幅も貼り付けたいのですが、
 我流で
 .Range("F1").PasteSpecial Paste:=xlAll
 とやってみたのですが、やはり列幅だけはコピーされませんでした。

 Selection.PasteSpecial Paste:=xlColumnWidths
 も使えなかったのですが、よい方法がありましたら教えて下さい。
 何度もすみません。 よろしくお願い致します。 (うみ)

 With MyBk.Sheets("Tmp").Range("F1")
     .PasteSpecial xlPasteAll
     .PasteSpecial xlPasteColumnWidths
 End With
 とか...
 (seiya)

 seiya様、毎度お世話様です。 やってみたのですが、.PasteSpecial xlPasteColumnWidthsのところで
「RangeクラスのPasteSpecialメソッドが失敗しました」と言われてしまいます。(うみ)


 あ、.PasteSpecial xlPasteAllの後に、手動(マクロを使わず)で「形式を選択して
 貼り付け」から「列幅」を貼り付けるとできました。でも、マクロを走らせると、はやり
 エラーメッセージがでます。。。(うみ)


 確かxlPasteColumnWidths に付いては以前トラブったことがありますが、
 うーーーーん、覚えていません...
 (seiya)

 http://www.moug.net/tech/exvba/0050104.htm によると
 xlColumnWidths はマクロ記録時のみ使用される定数で実行するとエラーになるようです。

 そもそもなのですが、今回はPasteSpecialで行う必要があるのでしょうか。
 Zueki シートのF:AG からコピーしたくないものがあるのですか?そうでなければ、
 With MyBk.Worksheets("Tmp")
    .Shapes.Delete ' --- 動かない?
    .Visible = True
    ThisWorkbook.Sheets("Zueki").Columns("F:AG").Copy _
         Destination:=.Columns("F:AG")
 End With
 のような感じではどうですか。
 (Mook)

 Mook様、ありがとうございました!完璧に動きました!!! ただ、Shapes.Deleteは
 やはりだめでしたが。

 いろいろ勉強になりました。seiya様、Mook様、どうもありがとうございました。 
 (うみ)

 xlPasteColumnWidthsに付いてはすっかり忘れていました。
 Mookさんの説明を見ても、へーーって感じです。
 歳をとるとこうなりまかね...
 Mookさんありがとうございました。
 (seiya)

 遅ればせながら
【関連ログ】
[[20060915094542]] 『マクロ列幅のコピーでエラー』(ビッキー)
[[20060613164708]] 『ペイストスペシャルでエラー』(かず)
[[20050302171917]] 『マクロ 値の貼り付けで』(ぶー)
 
本家:[XL2000]マクロ記録でPasteSpecialの引数Pasteが正しく記録されない
http://support.microsoft.com/default.aspx?scid=kb;ja;415379
 
(みやほりん)(-_∂)b

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.