[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『図の挿入時、前回挿入写真の位置に戻りたい』(できそこないちゃん)
お世話になっております。
図(写真)の挿入時、たくさんの写真の中からプレビューで選んで挿入しているのですが、
挿入ボタンを押すたび、毎回毎回挿入元フォルダの一番上から選ぶことになってしまい、時間がかかります。
挿入ボタンを押すと、前回挿入した写真の位置にカーソルをもっていけたらスムーズなのですが
何か方法ありますでしょうか。
vbaのコードでもよいのですが、ご教授いただけたらと存じます。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
もし、現状既にマクロで図形挿入しているならば、コードを見せてもらわないとです。
(???) 2018/06/14(木) 12:02
(まっつわん) 2018/06/14(木) 12:19
今のコードは
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim filename As String If Target.Count <> 9 Then Exit Sub filename = Application.GetOpenFilename(Title:="写真を選択", MultiSelect:=False) On Error Resume Next If Dir(filename) <> "" Then Set myShape = ActiveSheet.Shapes.AddPicture( _ filename:=filename, _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Target.Left, _ Top:=Target.Top, _ Width:=Target.Width, _ Height:=Target.Height) End If Target.Offset(, 1).Value = Split(filename, "\")(UBound(Split(filename, "\")) - 1) End Sub
という感じです。
複数選択はしない使い方にしておりまして、、、。
フォルダは前回のフォルダが表示されますが
フォルダではなくてフォルダの中に入っている写真を
特大アイコンのプレビューにて選ぶ際、
たくさん写真があると毎回毎回そのフォルダプレビューのときに
前回選んだ画像の位置(上下カーソル)ではなくて一番上の画像からまた探しださなくてはならないので
前回選んだ画像の位置を記憶することはできないかなぁと思った次第です。
(できそこないちゃん) 2018/06/14(木) 13:05
ぱっと思い浮かぶのは
1.エクスプローラからDragDropでパスを受け取る仕組みを作るとか
2.フォルダ内の写真全てを作業用シートに整列して貼り付けるマクロ(検索すると結構出てきます)とシート上に貼り付けられた写真の中からユーザーが選んだ写真をコピーしてくるマクロ
などが考えられます。
どっちにしろ結構大掛かりな仕掛けになりそうですね。
(名無し) 2018/06/14(木) 13:22
しかし、現状のコードを、複数選択可能にするだけなら即できますが、いかがでしょう?(ついでに、フォルダ名表示が9個あるのも無駄と思ったので、1つにしています。おそらく、セル連結していて問題無かったのでしょうけど)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim filename As Variant Dim myShape As Object Dim i As Long
If Target.Count <> 9 Then Exit Sub
filename = Application.GetOpenFilename(Title:="写真を選択", MultiSelect:=True) If TypeName(filename) = "Variant()" Then For i = 1 To UBound(filename) Set myShape = ActiveSheet.Shapes.AddPicture( _ filename:=filename(i), _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Target.Left, _ Top:=Target.Top + Target.Height * (i - 1), _ Width:=Target.Width, _ Height:=Target.Height) Cells(Target.Row + (i - 1) * 3, Target.Column + 3).Value = Split(filename(i), "\")(UBound(Split(filename(i), "\")) - 1) Next i End If End Sub (???) 2018/06/14(木) 14:25
ありがとうございます。できました!!
>複数選択可能にするだけなら即できますが
意図を汲んでくださりありがとうございます
こういうことがしたかったのです!!!
ついでといっては大変おこがましいお願いではございますが、
この複数写真を挿入する際、写真と写真の間は一行空けたいのです。
その場合はどのようにしたらよろしいでしょうか。
おこがましくてすみません。
(できそこないちゃん) 2018/06/14(木) 14:57
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim filename As Variant Dim i As Long Dim iR As Long Dim vw As Variant
If Target.Count <> 9 Then Exit Sub
filename = Application.GetOpenFilename(Title:="写真を選択", MultiSelect:=True) If TypeName(filename) = "Variant()" Then For i = 1 To UBound(filename) iR = Target.Row + (i - 1) * 4 ActiveSheet.Shapes.AddPicture _ filename:=filename(i), _ LinkToFile:=False, _ SaveWithDocument:=True, _ Left:=Target.Left, _ Top:=Cells(iR, 1).Top, _ Width:=Target.Width, _ Height:=Target.Height vw = Split(filename(i), "\") Cells(iR, Target.Column + 3).Value = vw(UBound(vw) - 1) Next i End If End Sub (???) 2018/06/14(木) 15:13
画像選択時に、選んだ順で貼り付けたい場合のコードを考えています。
調べたところBubbleSort fName, Trueを消去すればよいとあったのですが
これに値するコードがどこかわかりません。
お時間あるときにご回答いただければ幸いです。
宜しくお願いします。
(できそこないちゃん) 2018/06/18(月) 16:52
そして、見つけた情報というのは、これですか? [[20150831074248]]
これは、得られたファイル名群をソートしていますが、昇順にするか降順にするか切り替えているのであり、非ソートにはできないかと。
(???) 2018/06/18(月) 17:31
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.