[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『画像をワード経由(ドラッグ&ドロップ)で効率よく貼り付けたい』(sasa)
大量の画像を以下のマクロ(以前作成してもらいました)を
使用して貼り付けているのですが、画像のあるフォルダが大量にあるため、
毎回フォルダを参照するよりも、ドラッグ&ドロップで、
word2007にドラッグしてからExcelにドラッグして貼り付けています。
そこで問題なのが、Excelのシートに枠線がたくさんあり最初に画像を置いた位置に
枠線が消えてしまうので、元のExcelの写真を挿入しているセル(結合されているマクロボタン)に
置きたいのですが、「クリップボードに保存されているデータの大きさや形が、
指定された領域と異なります。貼り付けますか?」というエラーで貼り付けられないのと、
マクロを無効にしても結合されているため直接貼り付けられないのですが、
どのようにすればうまくいくでしょうか。
使っているマクロは以下になります。
Sub pasteImage() Dim filter Dim file
Application.ScreenUpdating = False
filter = "画像 ファイル (*.jpg),*.jpg,画像 ファイル (*.bmp),*.bmp" file = Application.GetOpenFilename(filter, , , , False)
If Not file = False Then ActiveSheet.Shapes.AddPicture _ Filename:=file, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Selection.Left + 1.25, _ Top:=Selection.Top + 1.25, _ Width:=370.5, _ Height:=278.25 End If
Range("A1").Select Application.ScreenUpdating = True End Sub
よろしくお願いします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
例えば、マクロ入りブックのあるフォルダ直下にinputフォルダを作成し、ここに貼りたい画像のコピーを置きます。
そのあと、マクロ実行で一気に貼り付けるのが良いでしょう。
ここで問題になるのが、どの画像をどのセルに貼り付ければ良いのか判らない点です。これを決定してください。
(上の案ほど、マクロ作成が容易ですが、別案があればそれを書いてください)
案1:とりあえず全部の画像を重ならないようにシートに貼り付けるだけ。セルへは手作業で移動する。
案2:コピーした画像ファイル名をリネームし、貼りたいセル位置に変えておく。(A1.jpg、等)
案3:画像を貼りたいシートとは別のシートに、画像ファイル名と貼りたいセル位置を記入した表を用意。これを参照する。
(???) 2014/11/05(水) 11:14
【ThisWorkbook】
Private Sub Workbook_Open() Dim cFile As String Dim cPath As String
cPath = ActiveWorkbook.Path & "\input\" With UserForm1 .Hide cFile = Dir(cPath & "*.*") While cFile <> "" .ListBox1.AddItem cFile cFile = Dir Wend End With End Sub
【シートモジュール】
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) UserForm1.Show vbModeless Cancel = True End Sub
【UserForm1】(ユーザーフォームを追加し、ここにListBoxコントロールとImageコントロールを貼っておく)
Private Sub ListBox1_Click() Image1.Picture = LoadPicture(ActiveWorkbook.Path & "\input\" & ListBox1.Text) End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ActiveSheet.Shapes.AddPicture _ Filename:=ActiveWorkbook.Path & "\input\" & ListBox1.Text, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Selection.Left + 1.25, _ Top:=Selection.Top + 1.25, _ Width:=370.5, _ Height:=278.25 ListBox1.RemoveItem ListBox1.ListIndex End Sub (???) 2014/11/05(水) 12:00
手順としては、今までは
フォルダのエクスプローラーのプレビューで特大アイコンにしてから(選びながら)、
ドラッグドロップ(ワード経由)で、Excelへ一個ずつ移動していました。
※Excelは、1シートごとに縦に3枚貼るようになっており、1個の枠は固定で、
結合セル( Width:=370.5, Height:=278.25)でしょうか。。
その枠にドラッグした際、その大きさ、幅にに自動で貼りつくようにしたいです。
伸縮率はある程度変形してもかまいません。
よろしくお願いします。。
(sasa) 2014/11/07(金) 17:00
http://oshiete.goo.ne.jp/qa/7167712.html
(マナ) 2014/11/08(土) 10:12
Sub test() Dim cFile As String Dim cPath As String Dim iR As Single
cPath = ActiveWorkbook.Path & "\input\" cFile = Dir(cPath & "*.*") While cFile <> "" ActiveSheet.Shapes.AddPicture _ Filename:=cPath & cFile, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=0, _ Top:=iR, _ Width:=370.5, _ Height:=278.25 iR = iR + 278.25 cFile = Dir Wend End Sub (???) 2014/11/10(月) 09:24
コンパイルエラー :Sub または Function が定義されていません と出て使用できません。。
スペルなどが間違っているかもみてみましたが、よくわかりませんでした。
ブラウザのリストビュー?を使用した方法が便利そうですが、いろいろ設定などが
ありそうなので、後で調べながらやってみようと思います。
ありがとうございます!
(sasa) 2014/11/11(火) 13:05
案4と違い、案1ならばシートモジュール1つにマクロを貼るだけです。
マクロを入れ替えるのではなく、新しいブックにマクロを貼って、ファイル保存してから実行してみてください。
(???) 2014/11/11(火) 13:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.