質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

24516閲覧

エクセル 写真複数一括かつ順番通りに貼り付けたい

cat_junko

総合スコア44

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2015/11/22 11:18

編集2015/11/26 23:27

複数選択で一括で貼り付けることができるとっても便利なコードなのですがこれを変更したいです。
1、貼り付けた写真を結合セルの中央に持ってきたい。
2、複数選択し貼り付けるとき任意の順番で貼り付けたい。
(1段目左上、1段目右上、2段目左上、2段目右上…)
★3、写真タイトルを、取り込むファイル名(拡張子は除く)
↑これは、出来れば嬉しい

こんな機能付けるコードは、難しいでしょうか?

1,2,3を、解決することが出来たのでコード削除しました。

画像を、載せたかったのですがまた載せられない状態になっているので時間をおいて載せたいと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ExcelVBAer

2015/12/17 02:37

こちらの質問が他のユーザから「質問の範囲が広すぎる」という評価を受けています わからない点を明確にし、調査したこと・試したことと共に記入していただくと、回答が得られやすくなります。
guest

回答3

0

sgr-2さんが非常に優しい方なので、
これ以上の回答は必要ないと思いますが、
こういった質問に疑問がありますので苦言させて頂きます。

仕事でコードを書いてる方にとっては
ご要望を実現することは簡単です。

しかし、知識・意欲が無い方には、
コードの意味が全く分からないと思いますので、
自分で仕様を変えてサンプルを作りなおすことは不可能です。

だから結果的にsgr-2さんはかなり具体的なコードを提示することになるでしょう。

あなたが作成も理解もしていないコードを掲示し、
要望を掲げて優しい方に奉仕させる、
ここはそういった場所ではないと思います。

投稿2015/11/23 07:45

ExcelVBAer

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんにちは。
現状のコードの素性やいきさつは分からないので、思い切って作り直してしまう手段はあると考えています。
色々作り込んでしまっているなら、考えないといけない事がありそうですが、質問文中の条件1,2,3を満足すれば良いのであれば現状コードに沿う必要もないのかな。と思いました。

soft/index.htmの方を見ると、改変に関しては「改変は自己責任において自由」とされていました。

個人的には、改変ではなく作り直しへの方針転換(?)をお勧めします。
ちょっとメンテナンスが大変かな…と思ってしまいました。。


2の「任意の順番で貼り付けたい」を実現するなら、以下のようなフォームを作ってしまいたいですね。
イメージ説明

どうしましょう?
まっさらから(作り直し)でも良ければ、私から情報を出す事ができそうですが


追記 2015/11/24
単純に目的の機能を満足するだろうサンプルを書いてみました。
以下コードの「SetImageMain関数」へ引数として
・1つ以上の配置先となるセル範囲(オペレーション的には多分Application.Selection)
・イメージファイルの一覧(フルパス文字列)
を渡してあげれば良いです。

VBA

1Option Explicit 2 3'<summary> 4' 指定されたセルへイメージを配置 5'</summary> 6'<param name="targetRng">処理対象全体の範囲</param> 7'<param name="imageFiles">イメージファイル(配列)</param> 8Sub SetImageMain(targetRng As Range, imageFiles() As String) 9 On Error Resume Next 10 Err.Clear 11 12 Dim FileSysObj As Object 'Scripting.FileSystemObject 13 Dim targetSht As Worksheet '対象のワークシート 14 Dim targetCell As Range '処理対象の範囲(セル) 15 Dim strMergeAreaOld As String '前回の処理範囲(結合セル)を記憶 16 Dim imgNameRng As Range 'イメージ名を設定するセル 17 Dim fileIdx As Integer 'ファイルのインデックス 18 Dim retVal As Boolean 'SetImage関数の戻り値受け取り用 19 20 'ファイル名から名前部分を取得するのに利用 21 Set FileSysObj = CreateObject("Scripting.FileSystemObject") 22 23 strMergeAreaOld = "" 24 fileIdx = LBound(imageFiles) 'ファイル一覧(配列)の最初の位置を取得 25 26 '対象のワークシートを取得 27 Set targetSht = targetRng.Parent 28 29 For Each targetCell In targetRng 30 31 With targetSht.Range(targetCell.Address) 32 33 '前回の範囲と一致する場合は次へ 34 If strMergeAreaOld = .MergeArea.Address Then 35 GoTo CONTINUE_FOR 36 End If 37 38 'イメージ配置の関数を呼び出し 39 retVal = SetImage(.MergeArea, imageFiles(fileIdx)) 40 41 '隣接するセルへファイル名の名前部分を記入 42 Set imgNameRng = targetSht.Cells(targetCell.Row + .MergeArea.Rows.Count, targetCell.Column) 43 imgNameRng = "'" + FileSysObj.GetBaseName(imageFiles(fileIdx)) 44 45 fileIdx = fileIdx + 1 '次のイメージへ 46 47 If fileIdx > UBound(imageFiles) Then 'イメージリストの終端に到達 48 Exit For 49 End If 50 51 strMergeAreaOld = .MergeArea.Address '今回の範囲を記憶 52 53 End With 54CONTINUE_FOR: 55 Next targetCell 56 57 Set FileSysObj = Nothing 58End Sub 59 60 61'<summary> 62' イメージを配置する 63'</summary> 64'<param name="mergeCell">配置対象のセル(結合)</param> 65'<param name="imageFile">イメージのファイル名</param> 66Function SetImage(ByRef mergeCell As Range, imageFile As String) As Boolean 67 On Error Resume Next 68 Err.Clear 69 70 Dim WSht As Worksheet 'イメージ配置の対称Worksheet 71 Dim Img As Shape '配置したイメージ 72 Dim rWidth As Double 'セルの幅とイメージ幅の比 73 Dim rHeight As Double 'セルの高さとイメージ高さの比 74 Dim ScaleVal As Double 'サイズ調整用のスケール値 75 76 SetImage = False 77 78 '対象のワークシートを取得 79 Set WSht = mergeCell.Parent 80 81 'イメージを配置 82 Set Img = WSht.Shapes.AddPicture(fileName:=imageFile, LinkToFile:=msoFalse, SaveWithDocument:=msoTrue, Left:=mergeCell.Left, Top:=mergeCell.Top, width:=0, height:=0) 83 84 Img.ScaleWidth 1, msoTrue '幅を元のサイズに 85 Img.ScaleHeight 1, msoTrue '高さを元のサイズに 86 Img.LockAspectRatio = msoTrue '縦横比を固定 87 88 89 rWidth = mergeCell.width / Img.width 90 rHeight = mergeCell.height / Img.height 91 92 If rWidth < rHeight Then 93 ScaleVal = rWidth 94 Else 95 ScaleVal = rHeight 96 End If 97 98 'ScaleValが1未満(セルに収まらない)場合に縮小 99 If ScaleVal < 1# Then 100 Img.width = Img.width * ScaleVal '縦横比固定なのでWidthかHeightいずれかを指定すれば良い 101 End If 102 103 '中央に配置 104 Img.Top = mergeCell.Top + (mergeCell.height - Img.height) / 2 105 Img.Left = mergeCell.Left + (mergeCell.width - Img.width) / 2 106 107 If Err.Number = 0 Then SetImage = True 'エラーがなければTrueを返す 108End Function

こちらのコードで機能的には大丈夫だろうと思います。

投稿2015/11/23 04:45

編集2015/11/23 21:55
sgr-2

総合スコア294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cat_junko

2015/11/23 05:20

こんにちは。 そうですね。作り直ししてしまうのが私もいいような気がしてきました。 すごいです!ウィンドウから選択なんて…。 また、頼ってしまっていいでしょうか? 宜しくお願い致します。
sgr-2

2015/11/23 07:23

フォームの利用については、 指定したファイルを任意の順番で配置する必要があるので、GetOpenFilenameで一括指示がそのまま使えません。(ファイル名で並び替えられてしまうので) そうなると、単純な回避策としてGetOpenFilenameで1つずつファイルを選択し、キャンセルされるまで繰り返す…がありますが、使う人の視点で考えるとかなり煩わしくなってしまうのではないかと感じます。このような場合には、フォームは強力な道具になってくれると思います。 私の方で、もろもろ含めてサンプルを考えてみます。その間にでも、簡単なVBAのフォームの使い方を見ておいて頂くと良いかも知れません。 # VBAエディタのメニュー[挿入]→「ユーザー フォーム」 後、2点ほど質問なのですが、 (a)「貼り付けた写真を結合セルの中央に持ってきたい」について、セル(結合結果)の大きさに合わせてリサイズをしたいでしょうか? ・縦横比は保持? ・セルのより大きい、小さいに関わらずセルいっぱいに拡大/縮小する? ・セルより大きい場合には、収まるように縮小。小さい場合はそのまま? (b)「写真タイトルを、取り込むファイル名(拡張子は除く)」について、タイトルを表示する位置はあるでしょうか? ・隣接するセル(上/下/左/右など) ・画像貼り付けセルに記述(画像を文字に被らないように配置)など ・それ以外
cat_junko

2015/11/23 09:50

こんばんわ。 (a)はい、現状のものが縦横比保持出来るのでそれが良いです。  セルより大きい場合は収まるよう縮小が良いです。  (他のネットに転がっているコードも試して見たのですがセルいっぱいにするとかっこ悪かったので) (b)写真タイトルは、隣接するセルの下表示が良いです。 「ユーザーフォーム」の使い方見てみます。 宜しくお願い致します。
sgr-2

2015/11/23 22:04

本文中にコードを追記しました。 ユーザーフォーム側のサンプルも書いたものがあるのですが、文字数制限に引っかかってしまいました。。 ここに貼るのは、現実的に無理そうです…
sgr-2

2015/11/23 23:40

クラウド上にストレージを配置しました。 ずっとストレージを置き続ける事はできませんが、とりあえず2日程度の期間を考えています。 以下のurlからコードを取得できます。 [メイン側サンプル] https://sgr2source.blob.core.windows.net/sgr2source-vba/VBA_MAIN.txt [ユーザーフォーム側サンプル] https://sgr2source.blob.core.windows.net/sgr2source-vba/VBA_FORM.txt ユーザーフォーム側ですが、 (a)実行するためには参照の追加が必要です。VBAエディタのメニュー[ツール]→[参照設定]から「Microsoft Windows Common Controls ~」にチェックを入れます (b)ユーザー フォームの名前(オブジェクト名)が「UserForm1」として書いてあります。オブジェクト名をUserForm1にするか、コード側でUserForm1を置き換えしてください (c)「UserForm1.Show vbModeless」のように呼んであげると良いと思います 使い方は見た目である程度分かってもらえるのではないかと思っています。 ファイルは各選択ボタンの他、リスト部分へのドラッグ&ドロップも可能です。
cat_junko

2015/11/24 01:13

sgr-2さん コード、ありがとうございます。 また、ネットに繋がらないのでスマホより書いています。 お昼までには、回復することを祈って実行してみたいと思います。 また、ユーザーフォームの上記(a)について見つかりませんでした。 これは、通常入っているものでしょうか?
sgr-2

2015/11/24 06:38

cat_junkoさん 参照追加の件ですが、Excelのバージョン、32bit/64bitによって状況が異なってしまう部分でした。 対象のものは「Microsoft ListView Control ~」のような名前かも知れません。 「Common Controls」か「ListView」をキーワードにして見てもらうと良いかと思います。 64bitだと、ListBoxなどに切り替えないといけなくなってしまうと思います。。 ユーザーフォーム側はいずれにしてもサンプル色の強い作りになっています。 確認後(参照の話がありますが)は、部分的に利用可能な所があればそれを取り出して組み直すのが本当は良いです。
cat_junko

2015/11/25 07:09

sgr-2さん こんにちわ。 「Microsoft ListView Control ~」も、なくてネットで調べてダウンロードしました。 インストールはしたのですが全然関係ないところへインストールされてしまいました。 ただ、「参照追加」ではなくてユーザーフォームをクリックしてツールボックスで右クリック→その他のコントロールで出ては来るようにはなったのですがアイコンには「不明」となります。クリックすると ------------------------------- Private Sub ListView1_BeforeLabelEdit(Cancel As Integer) End Sub --------------------- と、出てくるようにはなったのですがこれで使えますか?
sgr-2

2015/11/25 08:17

cat_junkoさん 私自身は、別途ダウンロードが必要だったりアイコンが「不明」となる現象に遭遇した事がなく、特に後者の「不明」は気になります… ただ、[ツールボックス]からユーザーフォームへ配置できて、これをクリックする事でコメント文中で頂いているようなコード(イベントプロシージャ)が生成されているのであれば動作させられる可能性があると思えます。 VBAエディタにて、以下の手順で実行の確認を頂けると良いと思います。 ----- ※新規Excelファイルとして (1)[挿入]メニューから[ユーザー フォーム]を選択して、ユーザーフォームを追加 (2)ユーザーフォームの名前(オブジェクト名)に「UserForm1」を指定(デフォルト値) (3)[ツールボックス]内の[ListView]をUserForm1上へドラッグ(UserForm1に配置) (4)手順(3)で配置したListView(名前はListView1)をUserForm1上から削除(選択してDEL) (5)UserForm1のコードへ「ユーザーフォーム側サンプル」のコードを貼り付け (6)実行 ----- (3)で配置して(4)で削除するのは、配置した時点で自動的に[参照設定]の必要な項目にチェックが入るからです。 おそらく、(2)の時点と(4)の時点で[参照設定]のチェック済み項目を比較してもらうと1つ項目が増えていると思います。 上記の手順で動作させる事ができない場合は、以下を教えてもらっても良いでしょうか? # すいませんが、情報頂いても原因を特定できない可能性があります… (a)ListViewを配置する事で、増えた(増えるはずの)[参照設定]でチェック済み項目名 (b)[参照設定]で(a)の項目を選択状態にすると、[場所]に表示されるファイルのパス(OCXファイル) (c)WindowsとExcelについて、それぞれバージョンと32bit/64bit 例) (a)Microsoft Windows Common Controls 6.0 (SP6) (b)C:\Windows\SysWOW64\MSCOMCTRL.OCX (c)Windows 7 64bit、Excel 2010 32bit
cat_junko

2015/11/25 23:17

sgr-2さん おはようございます。 (a)増えたものは、分かりませんでした。 (b)C:\PDFToExcelConverter\MCOMCTL.OCX(ListViewControl6.0(SP6)) C:\windows\SysWOW64\comctl32.ocx(~version5.0(SP2)) ↑のを、試しにチェックしたらアイコンが表示されました。  上段は、場所のせいですよね。昨日からこの場所を当たっているのですが見つからない のです。 (c)windows7 64bit Excel2010 32bit?
sgr-2

2015/11/26 00:58

おはようございます。 手順の内容で動作させられなかったですか… 今日(11/26)頂いたコメントで「試しにチェックしたらアイコンが表示されました。」は(b)のcomctl32.ocx側ですよね。 このアイコンが表示された状態で、前の手順の通り (3)ListViewをUserForm1に配置 (4)ListViewを削除 (5)サンプルコードを貼り付け (6)実行 で、動きそうな気はしています。(確認済みでしたらすいません) それでも駄目なら、 C:\Users\<ユーザー名>\AppData\Local\temp\VBEにある以下のファイルを削除してから再度試してみるくらいですかね。。 ※Excelを終了してから削除 ・MSForms.exd ・MSComctlLib.exd(存在していれば) ここまで試してみて駄目だと、困った…という状態です # 対象ocxをレジストリから一旦削除して再登録する。を試してみる…回復の可能性としては思い付きますが、会社資産のPCで手動でレジストリを触ってというのは多少躊躇があります。。
cat_junko

2015/11/26 03:46

sgr-2さん こんにちわ。 ---------------------------------------- 'フォーム上に配置するコントロール  ↓ここで、デバッグ時止まります。 Dim WithEvents FileBrowseBtn As MSForms.CommandButton Dim WithEvents LVFileList As MSComctlLib.ListView 'ファイルを表示するListView  ----------------------------------------------- コードを貼り付けない状態で実行するとエクセル画面で「userform」が開くようにはなりました! 「UserForm1.Show vbModeless」を、追加してないことも原因ですか?
sgr-2

2015/11/26 05:52

cat_junkoさん ボタン(MSForms.CommandButton)の箇所で止まってしまいますか… 少しやり方を変えましょうか。今の方法のまま突き進んでも解決が困難そうです。。 # UserForm1.Show vbModelssは原因ではないです。この記述はしなくても動作そのものは問題ありません。 手数は増えますが、以下で確認頂ければと思います。 ※新規Excelファイルとして (1)[挿入]メニューから[ユーザー フォーム]を選択して、ユーザーフォームを追加します (2)ユーザーフォームの名前は特に変更しなくて大丈夫です (3)[ツールボックス]から[コマンドボタン]を1つUserFormに配置します (4)この時点で実行(F5キー)して、ボタンが配置されたUserFormが表示される事を確認します (5)[ツールボックス]に[ListView]が正しくアイコンで表示される状態にしてください (6)[ツールボックス]から[ListView]を1つUserFormに配置します (7)再度、実行(F5)して、ボタンとListViewが配置されたUserFormが表示される事を確認します (8)手順(7)までに追加したボタンとListViewへそれぞれ名前(オブジェクト名)を指定します  ・ボタン 「FileBrowseBtn」  ・ListView 「LVFileList」 (9)追加で5つのボタンをUserForm上に配置します(ボタンは計6個になる) (10)追加した5つのボタンにそれぞれ次の名前を指定します  「FolderBrowseBtn」「DelFileBtn」「ItemUpBtn」「ItemDownBtn」「RunBtn」  # 配置する位置や大きさは考えなくても良いです。指定の名前の物が存在していれば良いです。 (11)UserFormのコードに「ユーザーフォーム側サンプル」のコードを貼り付けます (12)貼り付けたコードの以下の部分をコメントにするか削除します  ・21行目から27行目   「Dim WithEvents ....」と書かれている行全て  ・229行目   「Set FileBrowseBtn = UserForm1 ...」  ・242行目   「Set FolderBrowseBtn = UserForm1 ...」  ・255行目   「Set DelFileBtn = UserForm1 ...」  ・268行目   「Set LVFileList = UserForm1 ...」  ・292行目   「Set ItemUpBtn = UserForm1 ...」  ・305行目   「Set ItemDownBtn = UserForm1 ...」  ・315行目   「Set RunBtn = UserForm1 ...」  ・330行目から336行目   「Set ... = Nothing」と書かれている全ての行 (13)ここで実行(F5)して、「Private Sub LVFileList_OLEDragDrop ...」で止まった場合、追加で以下の範囲をコメントにするか削除します  ・181行目から212行目   「Private Sub LVFileList_OLEDragDrop ...」から対応する「End Sub」まで全て (14)ここで実行しても止まる箇所がある場合は、それらをコメント化または削除して止まらなくなるまで続ける  ただし、対象にしても良いのは269行目から267行目の「With LVFileList」から「End With」の範囲内のみです (15)実行してUserFormが表示されるのを確認する (16)[挿入]メニューの[標準モジュール]を選択して、こちらに「メイン側サンプル」を貼り付ける (17)UserFormを選択して実行
sgr-2

2015/11/26 06:05

上記の手順の中で (4)で躓いた場合  →根が深いです。レジストリから必要なエントリが削除されているのが原因です。Excelを再インストール可能なら一番確実だと思うのですが…簡単ではないですよね?多分 (7)で躓いた場合  →ListViewに関わるocxのインストールが失敗、あるいは(4)と同じように必要なエントリが削除されているのが原因です (13)または(14)で躓いた場合  →コメントにするか削除するかの内容について、漏れがないか確認してください (15)以降で躓いた場合  →止まった具体的な場所を教えて頂けると分かる可能性もありますが、ここの時点で止まる事は正直想定ができません。。
cat_junko

2015/11/26 10:13

sgr-2さん 明日、朝一でやってみます。 あと、もしかしたら家パソなら出来るかもしれないので家でもやってみます。 本来なら、ボタンも作成してくれるなんてす凄いですね。 初めは、書くものだと思っていました…????
cat_junko

2015/11/26 12:51

sgr-2さん 家で、やってみたら会社と同じくボタン配置で止まったので教えていただいた方法でやってみたら動きました! ただ、ファイル名が拡張子部分が「…」となってしまうのとアップダウンボタンが動いていないように見えます。 明日、画像載せますね。 このファイルを会社へもっていけば普通のファイル同様動きますよね?
sgr-2

2015/11/27 01:07

cat_junkoさん 遅くなってしまいましたが ・ボタンやListViewをコードから動的に生成する  →このサンプルのようなケースであれば、通常はコードから動的に作らせる(こんな書き方をする)必要は無いと思います。[ツールボックス]から必要なコントロールを手作業でUserForm上に配置していくのが普通の作り方と思います。(今回はボタン、ListViewコントロールの名前も、位置もサイズもコード側で全て管理/完結させたかった為、意図的にこのような書き方をしています) ・ファイル名の拡張子が「…」  →実際に見ているわけではないので想像にはなりますが、「拡張子が」ではなくて「拡張子までを含めたファイル名が」ListViewの幅(正確には列の幅)よりも長い場合に、収まらない部分を「...」で表現されているだけなのではないかと思いました。   ListViewの幅は、コード内で指定されています。13行目に「Const CTRL_FILELIST_WIDTH As Single = 150」とあると思います。この150が使われていますので、必要に応じて値を変更してもらえればと思います。(あまり小さくしたりするとレイアウトが崩れます…) ・「↑」「↓」のボタン  →ListViewでファイルを選択した状態で押す必要があります。また、例えばリスト上の一番上のファイルを選択した状態で「↑」を押したりするのは効果がありません。(既に一番上なので)   選択の必要があるのは「DEL」ボタン(選択されたファイルをリストから削除)も同じです  # 選択状態で押しても期待する動きにならないでしょうか? その他 ・画像ファイルの拡張子について  →とりあえずの形で、jpg、jpeg、png、bmpを受け付けるように書いています。これはコードの3行目「Const SUPPORT_IMAGEFILE_EXTENSIONS ...」で変更できます。受け付けたい拡張子を「|」区切りで書いてください。(大文字、小文字は区別しないので「jpg|JPG」のように書く必要はないです。「|」は先頭と末尾には書かないでください)  # 「拡張子がjpg」しか要らないのような場合は "jpg"のように指定します ・モードレス表示  →標準モジュール側(デフォルト名はModule1)に以下コードを追記すると、ユーザー フォームをモードレスで表示できます(フォームを表示したまま、Excelを操作できる) ----- Sub ShowFileSelectForm() UserForm1.Show vbModeless End Sub ----- 上記のShowFileSelectFormを実行します # Excelウインドウでマクロ(Alt+F8)から「ShowFileSelectForm」を実行など
cat_junko

2015/11/27 03:46

sgr-2さん ListViewのファイル名の表示についてですが充分な大きさ(教えていただいたコード内と同じ数値でもダメでした)にはなっていますが中央あたりで折り返しされています。 ↓↑は、ファイル名が折り返されているので動作しているようないないような感じです。 ただ、動いているのがきちんと分かるときもあるので動作はしているようです。 それ以外は、イメージ通りの動きをしてくれています。 本当にありがとうございます。 もう少し色々調べてみます。
sgr-2

2015/11/27 05:40

cat_junkoさん ファイル名の表示が折り返されているという事は、ListViewの表示形式が思いと違う形式になっているのかもしれません。 私が書いた手順の中で、(14)に「With LVFileList」から「End With」の範囲内で止まらなくなるまでコメントまたは削除するというのがありましたが、その中で思わぬ所がその対象に入ってしまった可能性があります。 元のコードで言うと、 「.View = lvwReport」と書いている行があるのですが、これが表示形式と言っている物に該当します。これがもし、手順(14)でコメント/削除の対象に入ってしまっていたなら以下のように変更する(削除しているなら追記する)事で、直るかも知れません。 「.View = 3」 他、同じように考えられるのは 「.LabelEidt = lvwManual」を「.LabelEdit = 1」 「.OLEDragMode = ccOLEDragManual」を「.OLEDragMode = 0」 「.OLEDropMode = ccOLEDropManual」を「.OLEDropMode = 1」 # これらは、変更しても止まるなら無視でも良いです
cat_junko

2015/11/27 07:03

sgr-2さん もう一度、コメントにするところからやり直してみました。 そしたら、突然ボタンが配置された状態で出てきました! 私が、作成したものとは別のものです! そして、快適に写真貼り付けが実現できるようになりました! 何が、起きたのかはよくわかりません…
sgr-2

2015/11/27 07:26

挙動としてはよく分かりませんが 状況としては、コードが期待する動きになったって事なんでしょうかね...
cat_junko

2015/11/27 08:55

はい。 今回も、またお世話になりぱなしでした。 ほんとにほんとにありがとうございました。 次回は、もう少しステップアップして質問出来るよう頑張ります。 今後とも宜しくお願いします。
sgr-2

2015/11/27 10:16

cat_junkoさん 環境の差だったりで、思うように"すんなり"とはいきませんでしたが きちんと動作するようになったようで良かったです。 「やりたい事」から「技術的なキーワード(機能)」に落とし込んでいくのは、最初はなかなか難しい事だと思っています。触り続けている事で、次第に感覚的に分かってくる部分も多いと思うので、じっくりで良いんじゃないでしょうか。 ユーザーフォームは除いて、機能として考えれば今回は以下の内容と言えそうですね。 ----- (1)複数選択されたセルの情報取得  →セルの位置(アドレス)、幅や高さ   Select,Range,Address (2)結合セル  →セルが結合されているか判断   MergeArea (3)画像の処理  →ワークシートへの追加、配置(位置、サイズ変更)   Shape,addPicture ----- はい。何かありましたら
cat_junko

2015/11/27 23:25 編集

sgr-2さん おはようございます。 また、何かの時には頼りにさせていただきます。 宜しくお願いします。
guest

0

このコードって、
エクセルの学校
『工事写真台帳作成(応用がききません :_; )』(マリン)
http://www.excel.studio-kazu.jp/kw/20111219151803.html
の丸写しに見えますが?
もともとのサイトでは、コードの来歴が触れられていませんが、
それを置いておいても、
他人のコードを無断で、丸写し状態で掲示するのは、如何なモノでしょうか?

投稿2015/11/22 12:12

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cat_junko

2015/11/22 12:45

もともとの作成者は、分かりませんが(会社の先輩から、頂いたのですでに退職した先輩が作成したものと思っていました…) でも、上記の場所ではないと思います。 たぶん、どこかの誰かが作成し上記のサイトにそのまま掲示し質問し今回たまたま社内で長く使われているコードを私が掲載してたまたまそこのサイトと同じだったって言うことだと思います。 上記のサイトの人も、いけないかと。
daive

2015/11/23 01:02

>http://kiyopon.sakura.ne.jp/soft/fukuzu.htm >改変履歴 >'バージョン 1.1 日付2008/10/17 >'バージョン 1.2 日付 2013/10/26 > 日付 2013/12/21EPSファイルを挿入できるようにしました。 と、メンテナンスが行われている様子です。 来歴が解ったのであれば、著作権者とメールなどで連絡をとって、 無償、有償(普通は有償)を明示した上での改変をお願いする。 更に、改変の許可なり、勝手に変更するのは、構わないのかなどの 確認をするのが、筋だと思いますが?
daive

2015/11/23 08:50

たぶんネット上のコードは、無償で自分の物として、 好き勝手にして良いと思っているかもしれませんが、 TPPをアメリカが批准した暁には、 日本の企業ユーザーを主ターゲットとした、 ネット上のコード乞食、コード泥棒をターゲットにした、 全く正常で問題ない刑事、民事訴訟、 無知な企業ユーザーを狙った詐欺行為が発生すると思っています。 ⇒過去には、時計の : コロン点滅特許に対する懲罰的賠償訴訟が、  企業による製品製造時点に遡って、行われています。
daive

2015/11/23 09:10

もう一つ >今回たまたま社内で長く使われているコードを >私が掲載してたまたまそこのサイトと同じだったって言うことだと思います。 就業規則によりますが、 企業によっては、今回の行為は、懲戒対象になります。 会社の責任者、上司、上長による、口頭以外の明示的許可が無いまま、 ネット含め、公の場所へ業務の内容を公開する事が、 禁止されている事は、当たり前で、普通です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問