• 締切済み

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

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

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >Application.Dialogs(xlDialogInsertPicture).Show これは、もともと、古い形式のダイアログですから、細かな機能はありませんので、必要なら、 Application.CommandBars.FindControl(, 2619).Execute を使えばよいです。 >Windowsのパスの設定って、VBAからでも出来るのでしょうか? みなさん、ChDir を使っているようですが、開く時に、環境変数かレジストリかを読んでいるので、無理ではないかと思います。 その変数のパスは、[マイピクチャー]だと思いますが、手動で換えることは可能ですが、VBAは知りません。 http://arena.nikkeibp.co.jp/article/tec/winxp/20030131/103648/

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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

cbr4001964
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 回答ではありませんので、申し訳ないのですが、通常のVBAでは、両方とも出来ないと思いますね。 ・ファイルの場所の指定ってできるのでしょうか? xlDialogInsertPicture は、組み込みダイアログの「図の挿入」は、OS のWindows の環境定数のPath を読んでいるからで、元を変えないとダメだと思います。だから、GetOpenFileName などのほうが楽だと思います。 ・ダイアログボックスの右上に表示される、表示の縮小表示を選択する 最大化・最小化ボタンなどは、標準的には、これらのダイアログには付いておりません。あえてつけるなら、おそらく、API関数によってつけると思いますが、これらのダイアログ・メソッドは、Excel Application のメンバにあり、開いている状態では、入力待ちのWaiting になっていますから、マクロが停止した状態になってしまいます。 UserForm のように、Excel本体とオブジェクトとして分離してくれません。 問題は、その必要性のような気がします。例えば、開いて閉じてを繰り返したくないからだとしても、FileName を取った後の問題も考えると、また、図の挿入に関しては、Wordほどではありませんが、Excelでも、その後の位置決めなども必要なので、単に入り口の部分だけでは、全体的に簡単にはすまないような気がします。

cbr4001964
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

ファイルの場所の指定は Call ChDir("c:\") Application.Dialogs(xlDialogInsertPicture).Show とします 縮小表示を選択することってできるのでしょうか? わかりません

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel VBA組み込みダイアログボックス

    Excel2002で、あるセルに入力した文字列をキーワードに、複数のワークシートを検索、検索結果表示を「編集」-「検索」-「すべて検索」をクリックしたように一覧表示したい。 組み込みダイアログボックスを使い、VBAを次のように記述しましたが、表示されるウィンドウに「すべて検索」の表示は無く、「次を検索」しかできません。 組み込みダイアログボックスの引数に何か指定すれば「すべて検索」が可能になるのでしょうか? それとも、組み込みダイアログボックスを使うことが間違っているのでしょうか? よろしくお願いします。 Public Sub Kensaku() '変数の宣言 Dim strKeywords As String Dim vntShar As Variant '検索したい文字列を変数Keywordsに取得 strKeywords = Range("B4").Value '左から2番目、3番目、4番目のワークシートを選択 vntShar = Array(2, 3, 4) Sheets(vntShar).Select '検索ウインドウを開いて検索を実行 Application.Dialogs(xlDialogFormulaFind).Show (strKeywords) End Sub

  • VBAの組み込みダイアログの引数Argについて

    エクセルVBAでの質問です。 エクセルとして名前をつけて保存なら Sub aaa() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.xls", ARG2:=1 End Sub テキストファイルとして名前をつけて保存なら Sub bbb() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.txt", ARG2:=3 End Sub CSVファイルとして名前をつけて保存なら Sub ccc() Application.Dialogs(xlDialogSaveAs).Show ARG1:="ABC.csv", ARG2:=6 End Sub でうまくいきます。 今度は、ファイルを開こうとxlDialogOpenに変えました。 Sub aaa2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.xls" ', ARG2:=1 End Sub Sub bbb2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.txt", ARG2:=3 End Sub 以上二つはファイル名入りのダイアログは出ました。でもダイアログの画面にはフォルダーしか表示されません。 Sub ccc2() Application.Dialogs(xlDialogOpen).Show ARG1:="ABC.csv", ARG2:=6 End Sub これは実行時エラーになりました。 どうも、Application.Dialogs(xlDialogSaveAs)とApplication.Dialogs(xlDialogOpen)では引数ARG2が違うようです。 Application.Dialogs(xlDialogOpen)でのARG2は何の指定なのでしょうか?またその数値の意味はなんでしょうか?

  • エクセルVBAの「組み込みダイアログボックス」の使用法?

    いつもありがとうございます。 組み込みダイアログボックスについて教えてください。 エクセルのシート内容をCSV形式で保存する場合、組み込みダイアログボックスを使い、下記のマクロでうまく行きました。 Sub CSV保存() '~略~ Application.Dialogs(xlDialogSaveAs).Show ARG2:=6 '~略~ End Sub 試した結果、上記の組み込みダイローグのファイルの種類のデフォルトは ARG2:=の次の値が6でcsv、1でエクセルになるようでした。 次に、エクセルを開いた状態でCSVファイルを開こうと思い、同様に組み込みダイアローグを使用するため下記のマクロを作りました。ところがうまくいきません。 Sub CSVdata取得() Application.Dialogs(xlDialogOpen).Show ARG2:=6 End Sub ・・・・と記述するとエラーになります。 この場合、どうも ARG2:=6の6の数字のところが4以上はエラーとなるようです。 ARG2:=の次の値を1~3にするとエラーにはなりませんが、デフォルトはいずれもエクセルでした。 最初からファイルの種類をCSV形式にするにはどう記述したらよいのでしょうか? どうかお助けください。

  • Excel VBA xlDialogSort引数リストの使い方

    いつもお世話になっております。 Excel VBA の使い方で困っていますので、どちらかご教授いただけると幸いです。 状況: 手動で並べ替えセル範囲を選択後、ボタンを押すと、 Application.Dialogs(xlDialogSort).Show を実行して、Excel組込み(標準)の並べ替えダイアログを表示させて、並べ替機能を利用したいのですが、この並べ替えダイアログの「範囲の先頭行」の指定が自動で「データ」となってしまい、困っています。 正しくは、常時「タイトル行」を指定したいと思っています。 そこで、VBAのヘルプを調べて、引数リストなるものを見つけましたが、使い方が判らなくて困っています。 (引数リスト) xlDialogSort orientation、key1、order1、key2、order2、key3、order3、header、custom、case (質問) Application.Dialogs(xlDialogSort).Show に、上記引数リストのいずれかを加えて、並べ替えダイアログでは常に「タイトル行」が選択されるようには、どうしたらよいのでしょうか?

  • エクセルVBA 組み込みダイアログのコンパイルエラーについて

    ファイル保存のための組み込みダイアログでデフォルトの名前を指定したい場合、 Application.Dialogs(xlDialogSaveAs).Show 'ARG1:="あたらしいファイル", ARG2:=1) でOKなのですが、 キャンセルボタンを押された場合の処理をするため Dim boCheck As Boolean boCheck = Application.Dialogs(xlDialogSaveAs).Show 'ARG1:="あたらしいファイル", ARG2:=1) If boCheck = False Then キャンセルの場合の処理 Else そうでない場合の処理 End if とするとコンパイルエラーになります。 どこが悪いのでしょうか?

  • オートシェイプの書式設定(線と色)の組み込みダイアログボックスを表示することは可能?

    オートシェイプの書式設定の組み込みダイアログボックスをEXCEL VBAから表示させることは可能でしょうか? Application.Dialogs(xlDialogPatterns).Show を使っても、セルやグラフ系のオブジェクトの書式設定はできるようですが、オートシェイプの書式となると、輪郭線の色や太さ(ポイント単位)が指定できないようです。 オートシェイプの書式設定はExcelの組み込みダイアログボックスに入っていないのでしょうか。

  • ExcelVBA/ダイアログボックスで選んだファイルのファイル名を取得したい

    ExcelのVBAについて教えてください。 「ファイルを開く」の時に出てくるようなダイアログボックスを表示させ、そこで選択したファイルのフルパス+ファイル名を文字列形式で取得したいのですが、どのようにしたら良いでしょうか? 自分でヘルプファイルもある程度調べてみたのですが、よく分かりませんでした。 最終的には、ワークシート上に画像ファイルを挿入し、その作成日付をセルに表示するようなものを作りたいのですが、 Application.Dialogs(xlDialogInsertPicture).Show では、画像は挿入されるものの、挿入した画像のファイル名を取得できないので、日付が調べられないのです。 宜しくお願いします。

  • 「プリンタの設定」ダイアログボックスのプリンタを指定したい。

    Excel VBAにて以下のコードを書き,接続されているプリンタ一覧の表示と設定は出来るのですが、のダイアログに表示されるプリンタを指定した物だけにしたいのです。 Application.Dialogs(xlDialogPrinterSetup).Show ダイアログの組み込み定数「xlDialogPrinterSetup」は引数でプリンタ名を持てる筈なのですが、どう書いてもエラーになってしまいます。 Application.Dialogs(xlDialogPrinterSetup).Show arg1:="プリンタ名" Application.Dialogs(xlDialogPrinterSetup).Show ("プリンタ名") Application.Dialogs(xlDialogPrinterSetup).Show(arg1:="プリンタ名") やりたい事は接続されているマシンの一覧の中から一つのプリンタを選択肢、それだけの設定ダイアログを出したいのです。

  • 組込ダイアログについて(エクセル)

    エクセルの組込ダイアログにパスのみを選定(ファイルを開くでファイルを開くのではなく目的にフォルダーを選定してそのフォルダーのパスを取得)するものってありますか? 皆さんは、どのように実現していますか? VBAに詳しい方教えてください。 宜しくお願い致します。

  • ExcelのxlDialogInsertPictureで。

    エクセルのVBAで、Application.Dialogs(xlDialogInsertPicture).Showを使って、写真取り込む時に、シートにではなく、フォームのImageに直接取り込む方法ってあるのでしょうか? UserForm1.Image1 = Application.Dialogs _(xlDialogInsertPicture).Show とするとエラーになってしまいます。 宜しくお願いします。

このQ&Aのポイント
  • 心に壁を作り、男に侮辱されたことを思い出してイラつきます。
  • 嫌われたことがきっかけで二面性を持つようになりましたが、社会人としてはうまくやれています。
  • 男に対して不信感や嫌悪感が強く、プライベートでの関わりも苦しいです。感情の爆発や生きる意欲の低下に悩んでいます。
回答を見る

専門家に質問してみよう