• ベストアンサー

エクセル2003・複数のブックに図形をコピーしたい

ブックが200位あります。 次の3点についてご教示お願いします。 1.すべてのブックのsheet1に図形をコピーしたい 2.すべてのブックのsheet2とsheet3を削除したい 3.すべてのブックのsheet1に保護をかけたい なお、すべてのブックのsheet名は同じです。 1つだけでも教えていただければ幸いです。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.4

またまた、遅くなり、申し訳ございません。 「インデックスが有効範囲にありません」が出るのは、 ワードの図形を保存するときではなく、 私のプログラムを実行するときに起こるのですよね? このエラーは、例えば、シートが2つしか無いのに、 「Sheet3」を指定した場合に起こります。 私のプログラムでは、「Sheet2」と「Sheet3」が 必ず存在する前提でしたので、逐一、 「Sheet2」と「Sheet3」が存在するか調べるプログラムに 書き換えました。 01:Option Explicit 02:Sub Main() 03:  Dim f As String 04:  Dim s As Shape 05:  Dim n As Worksheet 06:  Dim c As Boolean 07:  Application.DisplayAlerts = False 08:  f = Dir("D:\Test\" & "*.xls") 09:  Do While f <> "" 10:    Workbooks.Open "D:\Test\" & f 11:    For Each n In Worksheets 12:      If n.Name = "Sheet2" Then c = True 13:    Next 14:    If c = True Then 15:      Worksheets("Sheet2").Delete 16:    End If 17:    For Each n In Worksheets 18:      If n.Name = "Sheet3" Then c = True 19:    Next 20:    If c = True Then 21:      Worksheets("Sheet3").Delete 22:    End If 23:    Set s = ActiveSheet.Shapes.AddPicture(Filename:="D:\Test\Cat.jpg", LinkToFile:=True, SaveWithDocument:=False, Left:=Selection.Left, Top:=Selection.Top, Width:=480, Height:=360) 24:    ActiveSheet.Protect 25:    Workbooks(f).Close SaveChanges:=True 26:    f = Dir() 27:  Loop 28:End Sub これで、「Sheet2」や「Sheet3」がそれぞれ 存在したときだけ、削除しますので、 エラーは出ないはずですが、 もし、一度、私のプログラムを通しておられる場合、 今度は、プロテクトがすでにかかってしまっていますので、 プロテクトを解除しておく必要があります。 01:Option Explicit 02:Sub Unprotect() 03:  Dim f As String 04:  Dim s As Shape 05:  Application.DisplayAlerts = False 06:  f = Dir("D:\Test\" & "*.xls") 07:  Do While f <> "" 08:    Workbooks.Open "D:\Test\" & f 09:    ActiveSheet.Unprotect 10:    Workbooks(f).Close SaveChanges:=True 11:    f = Dir() 12:  Loop 13:End Sub これが、解除するプログラムですので、 私のプログラムを実行してしまっている場合、 まず、このプログラムを通して、 プロテクトを解除してから、 上記のプログラムを通してください。 このプログラムは、説明しなくても もう、分かって頂けますよね? 上記のプログラムの意味は、 11~13行目で、「Sheet2」を探し、 見つかった場合は、「c = True」。 もし、cの値が「True」だったら削除。 という行を「Sheet3」とあわせて 追加しました。 不明な点が、あれば、また、質問してください。

taka1012
質問者

お礼

度々のご回答ありがとうございます。 おかげさまで、希望のとおりできました。 本当に感謝!感謝!です。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.3

遅くなり、すみません。 少し調べてみましたが、私では、分かりませんでした。 そこで、提案ですが、ワードのテキストボックス内の図形を 画像として、ファイルに保存されてはどうでしょうか? それなら、私の組んだプログラムで、対処できますが… 図形上で、マウスの右クリックから「図として保存」などの項目が 出て来ないでしょうか? 出て来たら、名前を付けて、分かりやすい場所に保存し、 そのファイルを取り込めばOKです。 ちゃんとした答えになっておらず、申し訳ございません。

taka1012
質問者

お礼

度々のご回答ありがとうございます。 試してみましたが、「インデックスが有効範囲にありません」と表示されます。 なぜでしょうか?よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

はい、「Dir("D:\Test\" & "*.xls")」は 「D」ドライブの「Test」というフォルダ内の 拡張子が「xls」というすべてのファイルという意味です。 それから、エクセルと同じフォルダ内にある テキストボックス、とありますが、 テキストボックスが独立して存在するわけはないので エクセルのファイルとして存在しているのですか? ワードですか? エクセルだと、同じフォルダにあると ちょっとやっかいです。 すべてのエクセルのファイルを処理してしまうので、 その「テキストボックス」のあるファイルだけ マクロ(プログラム)用にして、 いったん、別フォルダに置いても構わないでしょうか? そうか、ファイル名を指定しておいて頂ければ そのファイルをこのプログラムから無視させることも可能ですが、 それでも良いですか?

taka1012
質問者

お礼

度々のコメントありがとうございます。 >エクセルのファイルとして存在しているのですか? >ワードですか? ワードです。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

まず、「1」についてですが、コピーする図形の元は、どこにあるのですか? 今、図形ではなく、画像がファイルとして同じフォルダに存在している場合で プログラムを組んでみました。 このプログラムでは、処理するエクセルのファイルが、 すべて同じフォルダに存在していなければなりません。 01:Option Explicit 02:Sub Main() 03:  Dim f As String 04:  Dim s As Shape 05:  Application.DisplayAlerts = False 06:  f = Dir("D:\Test\" & "*.xls") 07   Do While f <> "" 08:    Workbooks.Open "D:\Test\" & f 09:    Worksheets("Sheet2").Delete 10:    Worksheets("Sheet3").Delete 11:    Set s = ActiveSheet.Shapes.AddPicture(Filename:="D:\Test\Cat.jpg", LinkToFile:=True, SaveWithDocument:=False, Left:=Selection.Left, Top:=Selection.Top, Width:=480, Height:=360) 12:    ActiveSheet.Protect 13:    Workbooks(f).Close SaveChanges:=True 14:    f = Dir() 15:  Loop 16:End Sub 07行目の「Do While~」で、ファイルを順次処理しています。 処理するフォルダは、その上の06行目で指定しています。 画面上は、「\」で表示されていますが、 エクセル上では半角の「¥」マークです。 09行目と10行目で、開いたエクセルのファイルの 「Sheet2」と「Sheet3」という名前のシートを削除しています。 決して、2番目のシートと3番目のシートという意味ではありません。 シート名を直接指定しています。 11行目で、画像ファイルを左上端に挿入しています。 最後の数字(480、360)は、画像の大きさです。 12行目で、プロテクトをかけています。 13行目で、保存終了しています。 14行目は、ファイル名をクリアしておいて、 次のファイルを読み込むための準備です。 もし、何か、特定のエクセルのファイルから 画像ではなく、「図形」をコピーするのでしたら、 11行目が変わります。 そのときは、また、お知らせください。 なお、このプログラム自身は、 他のフォルダにある、エクセルのファイルです。 同じフォルダ内には、存在しません。

taka1012
質問者

お礼

ご回答ありがとうございます。 >まず、「1」についてですが、コピーする図形の元は、どこにあるのですか? 処理するエクセル・ファイルと同じフォルダにあります。また画像ではなく図形(テキストボックス)です。 >("D:\Test\" & "*.xls") これはDドライブのTestという名前のフォルダを意味するのですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数ブックを纏めて1ブックの1シートずつにコピー

    仕事で大量の処理をしなければならず、マクロ化を考えています。 どなたかご教示頂けないでしょうか。 大変困っています助けて下さい。 既定ブック(9シート1,2,3,4,5,6,7,8,9と名前をつけています。レイアウトは全て同じです。)をコピーした後に複数のブック(1シートのみです。既定ブックとほぼレイアウトは一緒です。)を指定し、一部分コピーをし、既定ブックに1シートごとペーストし、(担当者により複数ファイル数は異なります)名前付けてブックを保存後閉じるという作業をマクロ化したいと思っています。 500ファイルを担当者別にコピー&ペーストしなければならないので、是非ご教示頂けないでしょうか。何卒お願い致します。 なお、ペースト箇所は以下になります。(全てセルの結合をしております。) 【貼付箇所】 コピー元:Range("G6:P13").Select    → コピー先:Range("G6:P13").Select  コピー元:Range("V5:AD11").Select   → コピー先:Range("V5:AD11").Select 【値貼付箇所】 コピー元:Range("AA23:AD27").Select  → コピー先:Range("AG26:AG30").Select コピー元:Range("G23:Z27").Select    → コピー先:Range("AH26:AH30").Select

  • Excel 複数ブックを1つのシートにまとめる

    フォルダ内のワークブック約2,000個のデータを1つのシートにまとめたいのですが、VBAの勉強を始めたものの時間ばかりかかってなかなかうまくいかないので、ご指導をお願いいたします。 コピー対象の各ブック内のデータは以下の通りです ・シートは一番左端のもの1つ ・データの行数はバラバラで終端行の検出基準は「J列」 ・データの列は12列で固定 上記のようなデータをまとめ用の新規ブックを作って、1つのシートに全ブックのデータを加算してコピーをしたいです。 コピー対象の各ブックのシート名などは要りません。 ご教示よろしくお願いします。

  • excelでシートのコピーが出来ない

    Excel2000でシートのコピーが出来なくて困っています。 シートが6つあり、他のシートはコピーすることが出来るのに、ある一つのシートだけがコピーできません。 そのシートを他のブックへコピーすることは出来たのですが、その新しいブック内でそのシートのコピーを作ろうとするとやはりダメです。 シートの保護はしておりません。 何かわかる方が見えましたら御教示下さい。

  • Excel 違うBookのシートをコピーする

    Excelでわからないことがあり質問させていただきました。 原紙のBookに 資料のBookのシートをコピーさせたいのですが 資料Bookには シートが sheet1~sheet50まであり 原紙のBookにマクロのボタンやフォームを作成し 毎回資料のBookの違うシート名を選択しコピーをさせることは可能なのでしょうか? たとえば 原紙のシートに入力フォームを作り sheet名を入力 → 「コピー」のボタンを押すとコピーができる。 といった感じに・・・ フォームでなくてもリストなんかでもいいのですが・・・

  • 複数のエクセルブックをひとつのブックにまとめる方法

    同一フォルダに複数のエクセルブック(100個以上)が入っています。 その中のSheet1だけ(Sheet1~3まですべてのブックにあります)を一つのエクセルにまとめたいです。 ブックの中にSheet1、Sheet1(1)、Sheet1(2)・・・ みたいになればいいです。 Sheet名がブック名になるのが理想ですが。。 どのようにすればよろしいでしょうか?

  • エクセル ブック間コピー マクロ

    ブックA(ブック名は固定)のシートA(シート名は毎回違います)を ブックB(ブック名は固定)の一番左へコピーしたいのですがうまくいきません。 動作 :シートAでマクロを実行しブックBへシートのコピー(挿入)します。 まず第一段階のブックAのシートAをブックBへのコピーがうまくいきません。 シートAが固定シート名ならコードは Sheets("A").Select Sheets("A").Copy Before:=Workbooks("B.xls").Sheets(1) ですが・・・・ Sheets("A").SelectをWith ActiveSheet.Selectにすれば良いのですか? 申し訳ないのですが、後教授お願いします。

  • エクセルのシートを複数のBOOKにコピーしたい

    仕事で、エクセルの一枚のシートを、複数のBOOKにコピーする必要 が出てきました。いちいちシートをBOOKにコピーしていたのでは時 間がかかって仕方ありません。ある程度、まとめてコピーする方法はな いでしょうか。教えてください。お願いします。

  • エクセル2003図形を複数のシートにコピーしたい

    エクセル2003を使用しています。 図形を複数のシートにコピーする際、一回で(簡単に)できないでしょうか? セルのコピーは作業グループで可能でしたが、図形はできませんでした。 よろしくお願いします。

  • bookからbookへの数式のコピーについて教えてください

    bookからbookへの数式のコピーについて ??BookのSheet1のセルにSheet2を参照にした数式が入っています =2+Sheet2!$A8 これを!!BookのSheet1のセルにコピーすると =2+[Book1.xls]Sheet2!$A8 こうなりました コピーしたセルは11,475セルあります [Book1.xls]をすべて消したいのですが、簡単な方法はありますか?

  • マクロ ブックをマクロなしでコピー

    いつもお世話になっております。 マクロのことで 2つ教えて頂きたく書き込みをさせて いただきまいした。 よろしくお願いいたします。 ブックに何枚かシートがあり、 そのシートには全て同じマクロが入ってます。 このブックのシート全てを マクロを削除し新しいブックにコピーをしたいです。 また、コピーをする際に マクロがついているオブジェクト(ボタン) もとってコピーをしたいです。 自力で調べたのですが うまくわからずまた、こちらで質問 させていただきました。 よろしくお願いいたします

専門家に質問してみよう