• ベストアンサー

エクセル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形式にするにはどう記述したらよいのでしょうか? どうかお助けください。

質問者が選んだベストアンサー

  • ベストアンサー
  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.3

>Application.Dialogs(xlDialogOpen).Show arg1:="*.csv" これではまずいのですか? とりあえずファイルの種類は「テキストファイル」になるみたいですが。 ファイル名を空白のままにしておきたいのですかね?

AQUALINE
質問者

補足

>とりあえずファイルの種類は「テキストファイル」になるみたいですが。 ファイル名は、*.csvと表示されるんですが、その下のファイルの種類はエクセルのまま変らないんですよ~。 もちろんそこでCSVを選ぶことは出来ますが。 そしていちどCSVを選ぶと次回もCSVになったままなんですよ。

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

No.2ですが、ごめんなさい。違ったみたい。 ARG2:=6 の替わりということで Show(file_text) と思ったけど違いますね。 Application.Dialogs(xlDialogOpen).Show("*.csv") と Application.Dialogs(xlDialogOpen).Show arg1:="*.csv" は同じだと思いますが、これではダメなのですか? CSVだけ表示されますが・・・

AQUALINE
質問者

補足

> CSVだけ表示されますが・・・ あれえ!ほんとですねえ。 ダイアローグボックスの「ファイルの種類(T)」がエクセルファイルのままになっていたので気づきませんできたが、表示されてるファイルはちゃんとCSVになってましたね! ということは実用上これで問題はありません。 ファイル種類のところは無視しちゃえばいいわけですもんね。 ありがとうございました。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

Application.Dialogs(xlDialogOpen).Show(file_text) でいいと思いますが・・・

AQUALINE
質問者

補足

ありがとうございます。 やってみましたがダイアローグのファイルの種類のデフォルトはエクセルのままでした。

  • happypoint
  • ベストアンサー率36% (521/1422)
回答No.1

組み込みのダイアログボックス  Application.Dialogs~ では、ファイルの種類を指定することはできません。 その代わり、  Application.GetOpenFilename~ を使うと、指定することができます。 ただし、その場合は、開く処理を自前で用意する必要があります。 [例] Sub CSVdata取得() Dim strFileName As String  strFileName = Application.GetOpenFilename(FileFilter:="CSVファイル (*.csv), *.csv")  MsgBox strFileName '確認 End Sub

AQUALINE
質問者

補足

昨日(CSV形式での保存)に引き続き、またまたありがとうございます。 いろいろ試行錯誤を重ね、 Application.Dialogs(xlDialogOpen).Show arg1:="*.csv" で、ファイル名のところに「*.csv」を表示させるところまでは行ったのですが、ファイルの種類はやはり無理ですか。無理ならApplication.GetOpenFilenameでやるしかないですね。開く処理を自前で用意できるかやってみます。 ありがとうございました。

関連するQ&A

  • 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 組み込みダイアログのコンパイルエラーについて

    ファイル保存のための組み込みダイアログでデフォルトの名前を指定したい場合、 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の組み込みダイアログについて

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

  • 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

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

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

  • エクセルのVBAで指定フォルダにアクセスしてくれません。

    下記のような流れでVBAを作成したところ、xls形式でダイアログを指定する際に指定のフォルダにアクセスしてくれません。記述がおかしいのでしょうか。教えてください。 '**************************************** 'ダイアログ表示(csv形式) Dim MyFileA As String MyFileA = "c:\test\bonaplus" & Format(Date, "yyyymmdd") Sheets("test").Copy Application.DisplayAlerts = False 'arg2:=6(csvファイル形式) Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileA, arg2:=6 ActiveWindow.Close Application.DisplayAlerts = True 'ダイアログ表示(xls形式) Sheets("data").Select Range("A1").Select Dim MyFileB As String MyFileB = "c:\test\bonaplus" & Format(Date, "yyyymmdd") Application.DisplayAlerts = False 'arg2:=1(xlsファイル形式) Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileB, arg2:=1 'ActiveWindow.Close Sheets("data").Select Range("A1").Select MsgBox "c:\testにファイルが作成されました。" ThisWorkbook.Close Application.DisplayAlerts = True '**************************************** *************マクロの説明始***************** 指定フォルダにcsv形式でダイアログを表示させる 指定フォルダにxls形式でダイアログを表示させる エクセルを閉じる *************マクロの説明終*****************

  • Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙

    Excelのマクロでファイルを開くのダイアログをキャンセルしたときの挙動についてです。 マクロで次のような記述をしています。 Sub tekitou() Dim vntFileName As Variant vntFileName = _ Application.GetOpenFilename( _ FileFilter:="エクセルファイル(*.xls),*.xls" & _ ",CSVファイル(*.csv),*.csv" _ , FilterIndex:=1 _ , Title:="ファイルを開く" _ , MultiSelect:=False _ ) If vntFileName <> "False" Then Workbooks.Open Filename:=vntFileName End If うんたらかんたら End Sub このとき、ファイルを開くのダイアログをキャンセルしたときでも「うんたらかんたら」の部分が実行されてしまいます。 キャンセルを押したときにそこでそれ以降をスキップして何もなかったかのような挙動をさせるためにはどのような記述をすればいいのでしょうか?

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

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

  • エクセルVBAでマクロなしのブックでマクロを使う方法

    タイトルが変ですが、こういうことです。 Sub serch() Application.Dialogs(xlDialogFormulaFind).Show ActiveCell.Value End Sub このコードは検索ダイアログを表示するものですが、これをマクロなしの様々なブックで使いたいのです。 何か方法があるでしょうか?

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

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

専門家に質問してみよう