プロが教える店舗&オフィスのセキュリティ対策術

表題のことは、「挿入」-「図」-「ファイルから」で出来ることは百も承知なれど、もっと簡単に、シート上にドラッグするなどの方法はないものでしょうか。いちいちjpgの位置を参照指定するのがカッタルイんですゎ。D&Dしようとすると「+」マークが出て、いかにも出来そうな気配がするんですが、ダメなんですよねぇ。

A 回答 (7件)

ListViewControlでも良いかもしれませんが、


簡易的にWebBrowserコントロールではどうでしょう。

WorkSheet上に置いても使えますが、
mitarashiさんのようにUserFormに配置するほうが柔軟に対応できますね。

Personal.xlsにでもUserForm1を追加して
[ツールボックス]右クリック[その他のコントロール]で
Microsoft Web Browser にチェックを入れてWebBrowserコントロールをUserFormに配置します。
Formモジュールには

Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, _
                    URL As Variant, _
                    Flags As Variant, _
                    TargetFrameName As Variant, _
                    PostData As Variant, _
                    Headers As Variant, _
                    Cancel As Boolean)
  Cancel = True
  ActiveSheet.Pictures.Insert URL
End Sub

これくらいです。
_NavigateComplete2イベントを使ってもいいかもしれませんが。

使う時は
UserForm1.Show vbModeless
でUserFormを表示させておいてエクスプローラからドラッグ&ドロップするだけです。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

仰せの方法にて実現できました。
最後にUserFormが自動的に消えるコードを追加すれば、拙案(但しD&Dでフルパスが取得出来るソフトのアイコンを常にデスクトップに表示させておく必要がありますが)と比較し、処理の手数は全く同じですね。

お礼日時:2011/12/05 10:28

ドラッグ&ドロップに拘らなければ


エクスプローラで選択しておいて

Sub test()
  Dim w As Object
  Dim x As String

  On Error Resume Next
  For Each w In CreateObject("Shell.Application").Windows
    If InStr(TypeName(w.Document), "ShellFolder") > 1 Then
      x = w.Document.FocusedItem.Path
      Select Case UCase(Right(x, 3))
      Case "JPG" ', "PNG"
        MsgBox x
        'ActiveSheet.Pictures.Insert x
      End Select
      Exit For
    End If
  Next
  Set w = Nothing
End Sub

これでも可ですか。#winXP/xl2003でのみテスト。
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?p …
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

なるほど、いろいろなことができるもんですなぁ。
デスクトップ上の画像にも対応できたらよいな、と思いました。
それと、複数のエクスプローラーを立ち上げている場合なんか、注意深く操作をしないと予期せぬ画像を取り込むこともあり、その点、ANo.6で紹介いただいたUserForm方式が確実性で勝っていると思いました。

お礼日時:2011/12/05 15:28

Drag&Dropを受け付けるListViewControlはxl2010でも使えるのかなと思ってやってみました。


操作の手順は、
・貼り付けたいセルを選択して、右クリックメニューから拡張コマンド(ここではDD picture)を実行
・UserFormが表示されるので、エクスプローラやVix等からファイルをUserFormにドラッグ&ドロップ(複数選択対応)
・アクティブセルに画像を貼り付け(複数選択した場合は、前の画像から一行おいて連続貼り付け)
というものです。
骨格だけですので、エラー処理がありません。対応していないファイルをD&Dしたりするとエラーになりますがあしからず。

☆UserForm1モジュール
'ListViewコントロールを設置して、UserFormをお好きな寸法に設定しておく
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim i As Long

For i = 1 To Data.Files.Count
addPictures (Data.Files(i))
Next i
ActiveCell.Select
End Sub

Private Sub UserForm_Initialize()
Me.Caption = "D&D Picture"
'必要によりアクティブセルのそばにUserFormを表示するプロシージャを呼ぶ(下記はWebで見つけた一例)
' http://homepage2.nifty.com/kmado/kvba.htm
'kFormPosCell Me
With Me.ListView1
.OLEDropMode = ccOLEDropManual
.Top = 0
.Left = 0
.Width = Me.InsideWidth
.Height = Me.InsideHeight
End With
End Sub

Private Sub addPictures(myFileName As String)
Dim myShape As Shape
Dim shapeArea As Range

Set myShape = ActiveSheet.Shapes.AddPicture( _
Filename:=myFileName, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=Selection.Left, _
Top:=Selection.Top, _
Width:=0, _
Height:=0)

With myShape
.ScaleHeight 1, msoTrue
.ScaleWidth 1, msoTrue
End With
Set shapeArea = ActiveSheet.Range(myShape.TopLeftCell, myShape.BottomRightCell)
shapeArea.Offset(shapeArea.Rows.Count + 1, 0).Activate
End Sub

☆標準モジュール
Sub pastePicture()
UserForm1.Show vbModeless
End Sub

☆Thisworkbookモジュール(アドインにする場合)
'セルを選択して右クリックメニューから起動
Private Sub Workbook_AddinInstall()
Dim NewB As Variant

Set NewB = Application.CommandBars("Cell").Controls.Add()
With NewB
.Caption = "DD picture" '最初D&Dにしたが&は表示されなかった
.OnAction = "pastePicture"
.BeginGroup = True
End With
End Sub

Private Sub Workbook_AddinUninstall()
On Error Resume Next
Application.CommandBars("Cell").Controls("DD picture").Delete
On Error GoTo 0
End Sub

参考
1.UserFormでListViewControlを使う
http://officetanaka.net/excel/vba/listview/index …

2.アドインの作成
保存する時に、ファイルの種類を「エクセルアドイン (*.xlam)」にします。(2010の場合)

3.アドインの登録
http://www.h3.dion.ne.jp/~sakatsu/Excel2007_Addi …
デフォルトではアドイン形式で保存すると
C:\Users\ユーザーアカウント名\AppData\Roaming\Microsoft\Addins
に保存されますが、上記URLによると
C:\Program Files\Microsoft Office\Office14\Library
に置く方が良さそうです。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

ちょっと私のレベルでは対応不能なようです。VBA勉強の材料にさせていただきます。

ちなみに、私の案は下記のとおりです。

(1)エクスプローラー上で対象ファイルを右クリックし、フルパスをクリップボードにゲット(D&D方式のフリーソフトでもよいのですが)。
(2)挿入したいセルをクリックした後、あらかじめ(例えば)「Alt+g」に登録しておいたPersonal.xls内の下記マクロをキー操作で実行する(ショートカットキー)。

Sub 画像挿入()
Dim buf As String, CB As New DataObject
With CB
.GetFromClipboard
buf = .GetText
End With
ActiveSheet.Pictures.Insert(buf).Select
End Sub

お礼日時:2011/12/04 15:09

VBAなら近いことは出来る。


(1)一番やりやすいのは、フォルダは1定(同じフォルダに画像ファイルを集めている)として、画像ファイル名(文字列)を列のセルに集める。そうすればVBAの実行で
縦何列、横何列、間隔どれだけ、サイズなど指定して、整列させた形で(算術演算だ)配置できるよ。
(2)またはそのフォルダは、シートに挿入するものだけにして、余分なファイルを除いておけば、
指定フォルダの中のファイル名をとらえるコードは、簡単で、WEB上に出回っているから、それで1つずつ順に捉えて
そのファイル名で(1)を行うことは出来る。
ファイル拡張子に制限があると思うが。
ーー
ただし(1)でフォルダの画像ファイルをエクスプローラーで表示して置いて、エクセルシートへD&Dなどして、シートのセルにファイル名を文字列の形でセットする方法は、わからない。
ーー
エクセルは画像を主に扱うソフトでは無いので、余りあれこれ要求してもお門違い。
やりたいなら別のソフトを探すか、プログラムの域に入らざるを得ない。
ちょこちょこと質問sぢてで済むものではない。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

なにか複雑な作業を前提にされているようですが、私の目的とする作業は、エクスプローラーで目に止まった画像1枚をExcelシートの選択セル部分に貼付けるだけのことなんです。取りあえず、「ただ取り込むだけ」、です。但し手数少なく。ANo3お礼欄に記述した方法によれば、エクスプローラー画面に対象画像があったとして、(1)D&D、(2)貼付けたいExcelシート上のセルをクリック、(3)ショートカットキーでマクロ実行、という流れになります。

お礼日時:2011/12/03 18:56

案1


応用で、Wordオブジェクトを挿入しておくのもありかもしれませんね。

案2
1. エクスプローラーでアドレスをコピー
2. [図をファイルから挿入]コマンドボタンをクリック
3. ファイル名 の欄に[Ctrl]+[V]貼り付け [Enter]
で その場所までは簡単に行けます。

参考URL:http://search.vector.co.jp/vsearch/vsearch.php?k …
「Excelシートにjpg画像を素早く貼付」の回答画像3
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

案2をヒントに、適当なフリーソフトを利用し、D&Dにて対象画像のフルパスをクリップボードに取得し、VBAでDataObjectを使って選択セル位置に貼付けることで、曲がりなりにも目的は達成できるのではないかと。

お礼日時:2011/12/03 18:46

>シート上にドラッグ


とお考えなら、どのみち画像ファイルのパスまではWindowsエクスプローラなどでたどってるわけですよね?
だったら、アクセスキーを使ってAltを押下しながらI,P,Fと連打したあとで画像ファイルのパスまでをたどるのと最終的なトータル時間は変わらないように思えるのですが。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。

>どのみち画像ファイルのパスまではWindowsエクスプローラなどでたどってるわけですよね?

「どのみち」ではなく、もう「Windowsエクスプローラなどでたどって」しまってから、「じゃー、この画像でも挿入してみっか」ってケースが多いんですゎ。

お礼日時:2011/12/03 01:19

Office2000と2003を使っています。



word経由はいかがでしょう。
wordはドラックで出来ますね。
wordからExcelへはドラックで移動できます。
コピー&ペースト(貼り付け)も可能です。
(画像データが重いと時間が掛かります。)

私はツールバーに「図をファイルから挿入」のコマンドボタンを追加しています。
ちょっと楽です。
http://www.eurus.dti.ne.jp/yoneyama/Excel/mous_j …
「Excelシートにjpg画像を素早く貼付」の回答画像1
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございます。

>word経由はいかがでしょう。
>wordはドラックで出来ますね。

確かに!。

>wordからExcelへはドラックで移動できます。
>コピー&ペースト(貼り付け)も可能です。

ドラッグ移動はできませんでしたがコピペは出来ました。

ただ、私はWordを使うと気が狂いそうになるんです。Excelは大好きなんですが・・・。

VBAなら出来るんでしょうかねぇ。

お礼日時:2011/12/03 01:33

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