2016-05-05 29 views
1

VBAスクリプトで使用するワークシートを特定できない場合は、Excelダイアログボックスが開きます。「シートの選択」。これは素晴らしいです!プログラムで制御を行い、その "シート選択"ダイアログを使用するにはどうすればよいですか?Excel VBA:「シート選択」ダイアログにアクセスして制御する方法は?

私は..Toは、変数=選択したファイル名を設定

Application.FileDialog(msoFileDialogFilePicker) 

使用するコードを書いているが、私は、そのファイル内の特定のワークシートに変数を設定しようとしています。ファイルを開くことなくすべて。私は、ワークフローになりたい

:ダイアログが開きます

  1. ファイル - >
  2. OK> Excelファイルを選択してワークシートダイアログ(Excelの「シートを選択」ダイアログボックスのような)が開きます - >ワークシートのいずれかを選択します。そのExcelファイル> OK

私はApplication.Dialog(xl ...)の処理を行っていますが、正しいオプションが見つかりません。

助けてください!ありがとう。

+1

あなたは何を「選択シート」ダイアログを意味するのですか?すでにVBAコードで使用している場合は、既にプログラムで「制御」しています。あなたはこれについてより具体的になりますか?さらに、「ファイルを開くことなく、そのファイル内の特定のワークシートに変数を設定しようとしています。不可能です。オブジェクトがある場合は、変数をワークシートにのみ設定できます。これは、ファイルが開かれている場合のみです。これを回避する方法はありません。 – Leviathan

+0

「シートの選択」ダイアログは、リスト内のすべてのファイルのワークシートを含むコンボボックスのように見えません。 Excelが使用するワークシートがわからないときに開きます。開いていないが、msoFileDialogFilePickerを使用して選択したファイルの名前をVBA変数に入力するのと同じように、何らかの種類のDialog Worksheetピッカーを使用して開いていないワークシートの名前を変数に入力できるかどうかは疑問でしたダイアログ。 – PillBoxCharger

+1

「シートを選択」機能についてはまだ不明です。具体的な例(またはサンプルコード)がありますか?シートのリストについては、最初にファイルを開いてそこにあるシートを確認する必要があります。あなたがそこにあるファイルを見るためにディレクトリを開く必要があるように。これは、ファイルを開かないと実行できません。ファイルを開くことはバックグラウンドで行うことができますが、ファイルは後で直接閉じることができます。これはすべて、ユーザーがファイルを登録していなくても実行できます。しかし、それは開かれていますが、あなたはこのことをユーザーのためにやろうとしています。 – Leviathan

答えて

2

あなたがこの(適合した形態トムUrtisのhere)を試みることができる

Option Explicit 

Dim mySht As Worksheet 

Sub SelectSheet() 

Dim cmdBar As CommandBar 
Dim cmdBarBtn As CommandBarButton 
Dim sht As Worksheet 

RegDel 

Set cmdBar = Application.CommandBars.Add("Register", msoBarPopup) 
For Each sht In ThisWorkbook.Worksheets 
    Set cmdBarBtn = cmdBar.Controls.Add 
    cmdBarBtn.Caption = sht.Name 
    cmdBarBtn.Style = msoButtonCaption 
    cmdBarBtn.OnAction = "SelectThatSheet" 
Next sht 
cmdBar.ShowPopup 

MsgBox "you selected sheet '" & mySht.Name & "'" 

End Sub 

Sub SelectThatSheet() 
Set mySht = Worksheets(Application.Caller(1)) 
RegDel 
End Sub 

Sub RegDel() 
On Error Resume Next 
Application.CommandBars("Register").Delete 
On Error GoTo 0 
End Sub 
+0

うわー、それは働いているようです。今私はそれを迅速なものに包む方法を考えなければなりません。 – PillBoxCharger

+0

「プロンプトを見る」とはどういう意味ですか?上記のものが実際にシート名を選択するためのリストをポップアップさせます。そうでなければ、あなたはuserformで行くことができます – user3598756

+0

うん、実際には作成せずに、うまくいけば、デフォルトのプロンプト/ダイアログで、これを行う方法を考えてみてください。 – PillBoxCharger

関連する問題