こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel VBAの組み込みダイアログについて

ExcelのVBAの組み込みダイアログで、
Application.Dialogs(xlDialogInsertPicture).Show
についてですが、ヘルプの組み込みダイアログボックス引数一覧をみると
xlDialogInsertPicture file_name、filter_number
とあります。
これは、ダイアログボックスの図の挿入で、ファイル名とファイルの種類の引数になると思いますが、
ダイアログボックスの右上に表示される、表示の縮小表示を選択することってできるのでしょうか?また、ファイルの場所の指定ってできるのでしょうか?どなたか、詳しい方いらっしゃいましたら教えてください。よろしくお願いいたします。

投稿日時 - 2007-09-19 00:59:44

QNo.3357577

暇なときに回答ください

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こんにちは。

>Application.Dialogs(xlDialogInsertPicture).Show
これは、もともと、古い形式のダイアログですから、細かな機能はありませんので、必要なら、

Application.CommandBars.FindControl(, 2619).Execute

を使えばよいです。

>Windowsのパスの設定って、VBAからでも出来るのでしょうか?
みなさん、ChDir を使っているようですが、開く時に、環境変数かレジストリかを読んでいるので、無理ではないかと思います。

その変数のパスは、[マイピクチャー]だと思いますが、手動で換えることは可能ですが、VBAは知りません。

http://arena.nikkeibp.co.jp/article/tec/winxp/20030131/103648/

投稿日時 - 2007-09-19 15:41:54

ANo.3

質問の主旨が良くわからない
(1)Application.Dialogsの引数の指定の仕方か
(2)表示の縮小表示を選
なのか
ーー
(1)はApplication.Dialogs(xlDialogInsertPicture)の引数指定については色々やったが不達成。引数を指定しても、ダイアロウグの「ファイル名」にセットできず。
xlDialogOpenでは、Application.Dialogs(xlDialogOpen).Show(Arg:="*.xls")などできるようだが。
WEBも調べたが、この点に触れているもの見つからず、断念。
(2)もしセルÅ1にセルの大きさに合わせて画像をセットすればよいのなら、下記を実行してみてください。
そういう問題でなければ、すみません、無視してください。
A1セルの大きさを少し大きい目にして実行すること。
MsgBoxは確認のため入れているが、用済み後は削除してください。
A1をcells(i,j)で相対化すれば、人手操作で選択した画像を、A1->A2->A3・・
と順次場所をヅラして、セットできると思う。
フォルダ指定の下記XXXまたは全体は適当に自分に合わせて修正をしてください。
Sub test01()
ChDir ("C:\Documents and Settings\XXX\My Documents\My Pictures\")
Application.Dialogs(xlDialogInsertPicture).Show
x = Selection.Name
MsgBox x
Worksheets("Sheet1").DrawingObjects(x).Select
MsgBox Selection.Name
Selection.Top = Worksheets("Sheet1").Range("A1").Top
Selection.Left = Worksheets("Sheet1").Range("A1").Left
Selection.Width = Worksheets("Sheet1").Range("A1").Width
Selection.Height = Worksheets("Sheet1").Range("A1").Height
End Sub

投稿日時 - 2007-09-19 11:05:49

補足

セルの大きさに合わせて写真を調整する部分のマクロは既に出来ています。今回質問したのは、その前の挿入の状態部分でした。言葉たらずですみません。
下記のマクロを拡張させようと考えています。(今回の質問とは直接は関係ありません)
Sub 位置補正()

'これがアドイン用
Dim RangeTop As Integer
Dim RangeLeft As Integer
Dim RangeHeight As Integer
Dim RangeWidth As Integer

Dim PictureTop As Integer
Dim PictureLeft As Integer
Dim PictureHeight As Integer
Dim PictureWidth As Integer

Dim Range_HW_Ratio As Single
Dim Picture_HW_Ratio As Single

If TypeName(Selection) = "Picture" Then

RangeTop = Selection.TopLeftCell.MergeArea.Top
RangeLeft = Selection.TopLeftCell.MergeArea.Left
RangeHeight = Selection.TopLeftCell.MergeArea.Height
RangeWidth = Selection.TopLeftCell.MergeArea.Width

PictureTop = Selection.Top
PictureLeft = Selection.Left
PictureHeight = Selection.Height
PictureWidth = Selection.Width

ThisWorkbook.Worksheets("設定値").Range("B2").Value = PictureTop
ThisWorkbook.Worksheets("設定値").Range("B3").Value = PictureLeft
ThisWorkbook.Worksheets("設定値").Range("B4").Value = PictureHeight
ThisWorkbook.Worksheets("設定値").Range("B5").Value = PictureWidth

Selection.Top = RangeTop
Selection.Left = RangeLeft

Range_HW_Ratio = RangeHeight / RangeWidth
Picture_HW_Ratio = PictureHeight / PictureWidth

If UserForm1.OptionButton1.Value Then
If Range_HW_Ratio > Picture_HW_Ratio Then
'横に合わせる
Selection.Width = RangeWidth
Selection.Height = Int(RangeWidth * Picture_HW_Ratio)
Else
'縦に合わせる
Selection.Height = RangeHeight
Selection.Width = Int(RangeHeight / Picture_HW_Ratio)
End If
Else
Selection.Top = RangeTop
Selection.Left = RangeLeft
Selection.Height = RangeHeight
Selection.Width = RangeWidth
End If
End If

End Sub

投稿日時 - 2007-09-19 13:44:33

ANo.2

こんにちは。

回答ではありませんので、申し訳ないのですが、通常のVBAでは、両方とも出来ないと思いますね。

・ファイルの場所の指定ってできるのでしょうか?

xlDialogInsertPicture は、組み込みダイアログの「図の挿入」は、OS のWindows の環境定数のPath を読んでいるからで、元を変えないとダメだと思います。だから、GetOpenFileName などのほうが楽だと思います。

・ダイアログボックスの右上に表示される、表示の縮小表示を選択する

最大化・最小化ボタンなどは、標準的には、これらのダイアログには付いておりません。あえてつけるなら、おそらく、API関数によってつけると思いますが、これらのダイアログ・メソッドは、Excel Application のメンバにあり、開いている状態では、入力待ちのWaiting になっていますから、マクロが停止した状態になってしまいます。

UserForm のように、Excel本体とオブジェクトとして分離してくれません。

問題は、その必要性のような気がします。例えば、開いて閉じてを繰り返したくないからだとしても、FileName を取った後の問題も考えると、また、図の挿入に関しては、Wordほどではありませんが、Excelでも、その後の位置決めなども必要なので、単に入り口の部分だけでは、全体的に簡単にはすまないような気がします。

投稿日時 - 2007-09-19 10:50:53

補足

質問の仕方が悪くてすみません。縮小表示とは、図の挿入のダイアログボックスのツール(L)の左にある表示のボタンの中にある縮小表示のことです。表示の中には他に、並べて表示、アイコン、一覧、詳細、プロパティ、プレビューなどがあります。
これを選択するって出来るのでしょうか?
また、Windowsのパスの設定って、VBAからでも出来るのでしょうか?重ね重ね質問をして申し訳ありません。

投稿日時 - 2007-09-19 13:40:08

ANo.1

ファイルの場所の指定は
Call ChDir("c:\")
Application.Dialogs(xlDialogInsertPicture).Show
とします

縮小表示を選択することってできるのでしょうか?
わかりません

投稿日時 - 2007-09-19 01:26:45

あなたにオススメの質問