ExcelのVBAの組み込みダイアログで、
Application.Dialogs(xlDialogInsertPicture).Show
についてですが、ヘルプの組み込みダイアログボックス引数一覧をみると
xlDialogInsertPicture file_name、filter_number
とあります。
これは、ダイアログボックスの図の挿入で、ファイル名とファイルの種類の引数になると思いますが、
ダイアログボックスの右上に表示される、表示の縮小表示を選択することってできるのでしょうか?また、ファイルの場所の指定ってできるのでしょうか?どなたか、詳しい方いらっしゃいましたら教えてください。よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは。
>Application.Dialogs(xlDialogInsertPicture).Show
これは、もともと、古い形式のダイアログですから、細かな機能はありませんので、必要なら、
Application.CommandBars.FindControl(, 2619).Execute
を使えばよいです。
>Windowsのパスの設定って、VBAからでも出来るのでしょうか?
みなさん、ChDir を使っているようですが、開く時に、環境変数かレジストリかを読んでいるので、無理ではないかと思います。
その変数のパスは、[マイピクチャー]だと思いますが、手動で換えることは可能ですが、VBAは知りません。
http://arena.nikkeibp.co.jp/article/tec/winxp/20 …
No.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
この回答への補足
セルの大きさに合わせて写真を調整する部分のマクロは既に出来ています。今回質問したのは、その前の挿入の状態部分でした。言葉たらずですみません。
下記のマクロを拡張させようと考えています。(今回の質問とは直接は関係ありません)
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
No.2
- 回答日時:
こんにちは。
回答ではありませんので、申し訳ないのですが、通常のVBAでは、両方とも出来ないと思いますね。
・ファイルの場所の指定ってできるのでしょうか?
xlDialogInsertPicture は、組み込みダイアログの「図の挿入」は、OS のWindows の環境定数のPath を読んでいるからで、元を変えないとダメだと思います。だから、GetOpenFileName などのほうが楽だと思います。
・ダイアログボックスの右上に表示される、表示の縮小表示を選択する
最大化・最小化ボタンなどは、標準的には、これらのダイアログには付いておりません。あえてつけるなら、おそらく、API関数によってつけると思いますが、これらのダイアログ・メソッドは、Excel Application のメンバにあり、開いている状態では、入力待ちのWaiting になっていますから、マクロが停止した状態になってしまいます。
UserForm のように、Excel本体とオブジェクトとして分離してくれません。
問題は、その必要性のような気がします。例えば、開いて閉じてを繰り返したくないからだとしても、FileName を取った後の問題も考えると、また、図の挿入に関しては、Wordほどではありませんが、Excelでも、その後の位置決めなども必要なので、単に入り口の部分だけでは、全体的に簡単にはすまないような気がします。
この回答への補足
質問の仕方が悪くてすみません。縮小表示とは、図の挿入のダイアログボックスのツール(L)の左にある表示のボタンの中にある縮小表示のことです。表示の中には他に、並べて表示、アイコン、一覧、詳細、プロパティ、プレビューなどがあります。
これを選択するって出来るのでしょうか?
また、Windowsのパスの設定って、VBAからでも出来るのでしょうか?重ね重ね質問をして申し訳ありません。
No.1
- 回答日時:
ファイルの場所の指定は
Call ChDir("c:\")
Application.Dialogs(xlDialogInsertPicture).Show
とします
縮小表示を選択することってできるのでしょうか?
わかりません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Application.Dialogs(xlDialogFileDelete).Showの件 1 2023/02/22 10:02
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) Excel VBA オブジェクトマクロ 使用指定について お詳しい方教えてください。 共通エクセルフ 2 2023/03/14 17:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) ドキュメントに保存していたエクセルのファイルが開きません。 2 2022/12/02 09:38
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”挿入”がグレーアウトして選択...
-
wordで別々に作ったファイルを...
-
複数のエクセル・ワードファイ...
-
ファイルやフォルダーにリンク...
-
複数頁のあるPDFファイルをWord...
-
Power pointに写真の貼り付けが...
-
拡張子がemzのファイルを開きたい
-
複数の画像ファイルを挿入したい
-
Word文書にweb画像を挿入したい...
-
pdfファイルに雲マーク
-
手の形のカーソルアイコンについて
-
写真のコピー
-
Word ヘッダーの異なったファ...
-
ページ設定を保持したまま複数...
-
WORD:リンク挿入した画像のリン...
-
図をドラッグ&ドロップで挿入...
-
AccessのOLEオブジェクトについて
-
ワード 書式を崩さずにコピー...
-
Wordでページを複製したい
-
wordの文書中にwordのアイコン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
”挿入”がグレーアウトして選択...
-
複数のエクセル・ワードファイ...
-
wordで別々に作ったファイルを...
-
ファイルやフォルダーにリンク...
-
複数頁のあるPDFファイルをWord...
-
Power pointに写真の貼り付けが...
-
ワード 書式を崩さずにコピー...
-
ドラッグしたファイル名を入力...
-
手の形のカーソルアイコンについて
-
Wordでページを複製したい
-
複数の画像ファイルを挿入したい
-
pdfファイルに雲マーク
-
AccessのOLEオブジェクトについて
-
Excel:1つのセルの中にテーブ...
-
拡張子がemzのファイルを開きたい
-
画像がエクセルに直接貼り付け...
-
エクセルシートに複数の写真を...
-
Word文書の2ページ分を1ページ...
-
Word ヘッダーの異なったファ...
-
word上の図の赤バツ
おすすめ情報