Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12038 / 13645 ツリー ←次へ | 前へ→

【12666】複数の画像データ(jpg)を一括で選択しサイズを変更したいのですが やまと1 04/4/11(日) 0:17 質問
【12667】Re:複数の画像データ(jpg)を一括で選択しサ... kein 04/4/11(日) 0:31 回答
【12670】Re:複数の画像データ(jpg)を一括で選択しサ... やまと1 04/4/11(日) 22:40 お礼
【12672】Re:複数の画像データ(jpg)を一括で選択しサ... Kein 04/4/11(日) 23:56 回答
【12673】Re:複数の画像データ(jpg)を一括で選択しサ... やまと2 04/4/12(月) 1:43 お礼
【12689】Re:複数の画像データ(jpg)を一括で選択しサ... Kein 04/4/12(月) 15:39 回答
【12707】Re:複数の画像データ(jpg)を一括で選択しサ... やまと 04/4/12(月) 22:44 お礼
【12736】Re:複数の画像データ(jpg)を一括で選択しサ... Kein 04/4/13(火) 15:05 回答

【12666】複数の画像データ(jpg)を一括で選択しサ...
質問  やまと1  - 04/4/11(日) 0:17 -

引用なし
パスワード
   お世話になっております。

シートないに貼り付けた複数の画像データ(jpg)を一括で選択し、
サイズを変更したいのですが。。。。

よろしくお願いいたします。

【12667】Re:複数の画像データ(jpg)を一括で選択し...
回答  kein  - 04/4/11(日) 0:31 -

引用なし
パスワード
   本来なら、Picturesコレクションのプロパティを一括して変更できるはず
なんですが、テストしてみたらどうもサイズを統一できないようです。
なので各画像をループして・・

Sub MyPic_Size()
  Dim Pic As Object
 
  For Each Pic In ActiveSheet.Pictures
   Pic.Width = 400: Pic.Height = 300
  Next
End Sub

てな感じでうまく統一できましたが。
なおこの処理によって、画像が重なってしまうこともあります。サイズの変更
としか書かれていませんから、とりあえずそれだけの処理にしています。

【12670】Re:複数の画像データ(jpg)を一括で選択し...
お礼  やまと1  - 04/4/11(日) 22:40 -

引用なし
パスワード
   kein さんありがとうございました。
上手く動きました。

すいません質問なのですが、
現在、フォルダに連番で大きさが異なるjpgファイルが多数入っています。
そのjpgファイルを順番に貼り付けて、001.jpgはA1、002.jpgはA2という感じで貼り付けたいのですが。。。。


よろしくお願いいたします。

【12672】Re:複数の画像データ(jpg)を一括で選択し...
回答  Kein  - 04/4/11(日) 23:56 -

引用なし
パスワード
   仮に C:\My Documents\My Pictres に保存しているとして

Sub MyPic_Ins()
  Dim i As Integer
  Dim Tp As Single, Wp As Single, Hp As Single
 
  With Application.FileSearch
   .LookIn = "C:\My Documents\My Pictres"
   .FileName = "*.jpg"
   .FileType = msoFileTypeAllFiles
   If .Execute(SortBy:=msoSortbyFileName, _
   SortOrder:=msoSortOrderAscending) > 0 Then
   For i = 1 To .FoundFiles.Count
     With Cells(i, 1)
      Tp = .Top: Wp = .Width: Hp = .Height
     End With
     With ActiveSheet.Pictues.Insert(.FoundFiles(i))
      .Left = 0: .Top = Tp: .Width = Wp: .Height = Hp
     End With
   Next i 
  End With
End Sub

ベタ書きしただけなので、うまくいくかどうか全く不明です。あしからず。

【12673】Re:複数の画像データ(jpg)を一括で選択し...
お礼  やまと2  - 04/4/12(月) 1:43 -

引用なし
パスワード
   Kein さんへ
ありがとうございます。

上手く動きません。
end withの構文エラーがでます。

素人なので分かりません。

お手数ですが教えていただけないでしょうか?

よろしくお願いいたします。

【12689】Re:複数の画像データ(jpg)を一括で選択し...
回答  Kein  - 04/4/12(月) 15:39 -

引用なし
パスワード
   すいません、タイプミスで Pictures の "r" が抜けていたようです。
こんなコードでテストしてみて下さい。

Sub MyPic_Ins()
  Dim i As Integer
  Dim Tp As Single, Wp As Single, Hp As Single
  Dim FN As String
 
  With Application.FileSearch
   .LookIn = "C:\My Documents\My Pictures"
   .FileName = "*.jpg"
   .FileType = msoFileTypeAllFiles
   If .Execute(SortBy:=msoSortbyFileName, _
   SortOrder:=msoSortOrderAscending) > 0 Then
   For i = 1 To .FoundFiles.Count
     With Cells(i, 1)
      Tp = .Top: Wp = .Width: Hp = .Height
     End With
    FN = .FoundFiles(i)
     With ActiveSheet.Pictures.Insert(FN)
      .Left = 0: .Top = Tp: .Width = Wp: .Height = Hp
     End With
   Next i 
  End With
End Sub

【12707】Re:複数の画像データ(jpg)を一括で選択し...
お礼  やまと  - 04/4/12(月) 22:44 -

引用なし
パスワード
   ▼Kein さんへ:
ありがとうございます。
end withのまえにend ifを入れるとうまく動きました。

大変申し訳ないのですが、12671の質問にもご教授願いたいのですが、

現在、シート内に印刷設定がされています。
B1:N40、B41:N80、B81:N120、B121:N160..と50ページあります。

作っていただいたマクロを利用して、ページ内に1枚の画像を張り付けていきたいと考えております。印刷するのはページ内に画像データ
(セルの番地c5,c45,c85,c125、サイズはPic.Width = 200: Pic.Height = 100)があればそのページを印刷したいのですが可能でしょうか?

よろしくお願いいたします。

【12736】Re:複数の画像データ(jpg)を一括で選択し...
回答  Kein  - 04/4/13(火) 15:05 -

引用なし
パスワード
   >作っていただいたマクロを利用して、ページ内に1枚の画像を張り付けていきたいと
>考えております
これ、A列に並べていくのと違う処理になると思いますが、応用して出来るという
ことですね ? それならご自分でやって下さい。もう1つの質問で
>B1:N40、B41:N80、B81:N120、B121:N160..と50ページあります。
>セルの番地c5,c45,c85,c125、サイズはPic.Width = 200: Pic.Height = 100)
>があればそのページを印刷したいのですが可能でしょうか?
ですが、50ページ全部をチェックするのでなく「c5,c45,c85,c125 に画像ファイルの
左上端が位置しているページ」と解釈するなら・・

Sub MyPG_Print()
  Dim PAry As Variant, CkR As Variant, GetR As Variant
  Dim Pic As Object
  Dim Ad As String

  PAry = Array("$B$1:$N$40", "$B$41:$N$80", _
  "$B$81:$N$120", "$B$121:$N$160")
  CkR = Array("$C$5", "$C$45", "$C$85", "$C$125")
  ActiveSheet.OLEObjects.PrintObject = True
  For Each Pic In ActiveSheet.Pictures
   Ad = Pic.TopLeftCell.Address
   GetR = Application.Match(Ad, CkR, 0)
   If Not IsError(GetR) Then
     Range(PAry(GetR)).PrintOut Copies:=1
     'ActiveSheet.PageSetUp.PrintArea = PAry(GetR)
     'ActiveSheet.PrintOut Copies:=1
   End If
  Next
  'ActiveSheet.PageSetUp.PrintArea = ""
  Erase PAry, CkR
End Sub 

Rangeオブジェクトを対象にした印刷がうまくいかないときは、コメントにしている
コードと入れ替えて試してみて下さい。

12038 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free