- ベストアンサー
エクセルに写真を貼る
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
予め貼り付ける先のセルを選択し添付のマクロを実行することで ・拡張子が.jpgのファイルを選択するダイアログが開く ・選択した画像が、予め選択したセルに張り付く ・貼り付けた画像の高さを指定した値に変更する (横幅は高さに比例します) という動作となるマクロを書いてみました。 使ってみて、期待にそぐわない部分があれば指摘してください。 対応できるかもしれません。 Sub PictureAdd() Dim myFile As Variant Dim pic As Picture 'ファイルを選択 myFile = Application.GetOpenFilename("画像ファイル(*.Jpg),*.jpg") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else '貼り付けてサイズを変更 Set pic = ActiveSheet.Pictures.Insert(myFile) With pic .Height = 100 '高さ End With End If End Sub
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1721/2591)
□が何を意味するのか不明ですが、マクロで操作することのほどもないと思います。 セルを選択して挿入タブの画像をクリックしたら画像選択できるので必要な画像を選択して決定するだけです。 マクロで作成してもファイルの選択決定はしなければいけないわけですから、マクロにしたからと言ってご自身がする操作は殆ど変わりません。
お礼
ご回答ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
宗旨替えをする気はないでしょうが、小生は、エクセルよりも他の専用ソフトを 探す!方を勧めます。 今時は、自分で作るのでなく,作ったものを探して、有料で購入し使う時代でしょう。 ーー エクセルに写真を張り付けて、あと、どうしたいのかも書いてないレベルの人にマクロなど 大丈夫かと思いました。VBAコード作成の経験はあるのかな。 ーー 写真を整理する他に、文章を入れる、検索する、他の文書などにコピペなど考えられるが。 計算する情報なども必要なニーズ(使い道)なのかな。 ーーー まだワードの方がマシしではないかと。 ワードの 「写真入り テキストボックス」 などでWEB紹介し記事を読んではどうか。 文章用の独立したテキストボックスを写真の右側に設けておき、自由に記事を書き込むとか。 この程度ならボタンクリック1つで行うVBAも易しいと思う。 沢山の写真をどう整理する(探し出す=頻度は少ない?)か目算はあるのか。 ーーー または、ベクター(無料ソフト) https://www.vector.co.jp/soft/winnt/writing/se240256.html のような文章も入れられるソフト。 ーー エクセルはSheetをページ的な使い方はできるが、メリットはどんな点にあると思っているのでしょうか。 ーー >マクロやVBAで良いやり方があれば 工業分野の高校・高専・大学でも出ているキャリアの人なら、学習が進むかもしれないが、安易に工事のような、仕事をしながら、VBAでなんて首を突っ込むのは目指さない方がよいのでは。 マクロ(エクセルやワードなどに限りの話で)は人間の手作業でできることを素早くやる手段でしかない。一般市販ソフトではマクロの利用は、制作会社が作って公開していないようだ。AUTOCADにはマクロがあるようだがVBAとは見た目違うようだ。 ーー まず手作業でやる場合は、どうするのかを、ステップを追って、ステップごとに文章で、書き上げ、どのステップが手作業で面倒なのか検討し、その点をVBAで補う方法もある(多分、作業の部分的な処理なら、数ステップのマクロになるだろうから。WEB照会もしやすい。)
お礼
ご回答ありがとうございました。
おまけ。No.1に書いた私が便利ではないと言うマクロの例です。 EXCELの上のメニューバー(「ファイル」「ホーム」「挿入」・・・)に「開発」が出るようにして、開発→Visual Basic。 VBAで、挿入→標準モジュール、でModule1に下記のコード --------------------------------------------------------------- Sub 写真貼付() Range("B40").Select If Application.Dialogs(xlDialogInsertPicture).Show = True Then End If Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Height = 275 End Sub --------------------------------------------------------------- を書きます。ここでB40が写真を挿入する位置の左上です。 EXCELシートに戻って、画像挿入で「挿入」などと字を書いた画像を上の例ではB40の写真中央になるはずの位置に挿入して、右クリック→マクロの登録、で上記標準モジュールを登録する。 これで、「挿入」と書いた絵をクリックすると、画像ファイルを選んでサイズ調整して貼り付けるようになります。 ところが、標準モジュールは貼り付け可能な写真の枚数だけ必要で、「Sub 写真貼付()」を「Sub 写真貼付1()」「Sub 写真貼付2()」「Sub 写真貼付3()」・・・などと最大写真枚数分作って標準モジュールに「Module1」「Module2」・・・などと登録して、それぞれの標準モジュールのコードの中の「B40」もそれぞれの写真の位置に書き換え、EXCELシート上に張り付ける「挿入」ボタンに登録する標準モジュールもその位置に応じた標準モジュールを指定する必要があります。これではEXCELの行をコピーして写真を移動してしまった後でコピー先で貼り付け動作をすると、コピー元の標準モジュールを呼び出してコピー元に写真を張り付けてしまい、結局、行コピーは実質的に禁止です。写真の挿入や削除にはその写真以降の貼り付けのやり直しになるのです。技術的に面白いですが私には便利と感じられません。もっと進化したコードも書けるのかもしれませんが、私の経験はこんなところです。
お礼
ご回答ありがとうございました。
最初に写真の枠がすべて空白になっていて、そこをクリックすると画像ファイル選択のダイアログが出て写真を選ぶと、自動的にサイズ調整して写真を貼ってくれる、というマクロはあります。これはちっとも便利ではありません。 というのは、工事写真帳の作成で最大の労働は、写真をEXCELに貼ることではなく、貼り終わった後で写真を挿入したり削除したり順番を入れ替えたりすることだからです。正確に言うと、写真を挿入したり削除した後でページを整えることが最大の労働です。 最初から1ページの体裁に写真が配置されたEXCELシートを使うと、写真を1枚挿入するためにはそれ以降の写真をうしろにずらすことができず、それ以降の写真とコメントをすべて削除して、再度ずらして貼り付けなければならず、削除するには同様にひとつ後ろの写真とコメントを前にコピーしなければなりません。 そこで、最も便利な工事写真帳のEXCELの形式は、すべての写真とそのコメントが等しい行数と縦の長さでありながら、印刷すると調整の必要なくページに分かれるという形式です。これで、編集中はページを意識せず写真1枚分の行単位で追加も削除もできて、印刷するときれいにページに分かれて並びそのまま提出でき、作業時間の短縮になります。写真を貼る労働は質問者殿が言われる手順ですが作業全体でたいした割合を占めません。 写真は具体例です。すべての写真とコメントの縦の長さが均等で、しかも写真3枚でちょうど1ページの長さです。
お礼
ご回答いただきありがとうございました。
お礼
自分なりに組んだ結果、上手くいきました。 ありがとうございました。