- 締切済み
エクセルのコントロールボックスの利用方法がわからず困っています。
Excelのコントロールボックスを利用して、 1.テキストボックスに記載した名前のフォルダを 例えば、デスクトップに作成する方法。 2.コンボボックスのリストから、 例えば「A」を選択すると、 「A」に関連したファイル(既にデスクトップに作成済み)を 1.で作成したフォルダに 保存する方法。 を教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 そのご質問は、たぶん、思っているよりも、難しいですね。 以下で、その動きを確認してみてください。ただ、私の考えていた方法が、理由は良く分からないのですが、こういうイベント型の起動が、気に入らないので変えてしまう人もいるようです。ただ、私自身は、いきなり起動するというのは、安全上、どうかなって思うからです。なお、当たり前のことですが、TextBox1_Change は、ダメです。 起動方法: ComboBox1 起動は、選択した後に、ダブルクリックでマクロが起動 ComboBox1 のデータは、ファイル名だけにしてください TextBox1 は、行末で、Enter を入れるとフォルダを作成 なお、デスクトップは、ユーザー側のデスクトップです。グローバル側ではありません。 --------------------------------------------- Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim FName As String Dim Folname As String Dim myDesktop As String 'ComboBoxのアイテムをダブルクリックすると、コピーされる FName = ComboBox1.Text If TextBox1.Text = "" Then Exit Sub Folname = TextBox1.Text If CheckFolder(Folname) > 1 Then MsgBox "フォルダの所在を確認してください。" Exit Sub End If myDesktop = Mid$(Folname, 1, InStrRev(Folname, "\") - 1) If Dir(myDesktop & "\" & FName) = "" Then MsgBox FName & " が、デスクトップ上で見当たりません。", 48, "ファイル確認" Exit Sub End If If Dir(Folname & "\" & FName) = "" Then Name myDesktop & "\" & FName As Folname & "\" & FName MsgBox FName & vbCrLf & "は、" & Folname & " に格納されました。", 64, "ファイル確認" Else MsgBox "すでに、" & Folname & " には、" & vbCrLf & FName & "があります。", 64, "ファイル確認" End If End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim myDesktop As String Dim Folname As String Dim i As Integer 'Enter を入れると、起動する If KeyCode <> 13 Then Exit Sub If TextBox1.Text = "" Then Exit Sub Folname = TextBox1.Text i = CheckFolder(Folname) If i = 0 Then MsgBox Folname & vbCr & _ "は、作成しました。", 64, "フォルダ確認" ElseIf i = 1 Then MsgBox Folname & vbCr & _ "は、すでにあります。", 48, "フォルダ確認" ElseIf i = 2 Then MsgBox Folname & vbCr & _ "は、ファイル名として存在しています", 32, "フォルダ確認" End If End Sub Private Function CheckFolder(ByRef Folname As String) 'フォルダ確認 Dim myDesktop As String Dim Ret As Integer With CreateObject("WScript.Shell") myDesktop = .SpecialFolders("Desktop") Folname = myDesktop & "\" & Folname If Dir(Folname, vbDirectory) = "" Then MkDir Folname Ret = 0 Else If GetAttr(Folname) And vbDirectory Then Ret = 1 Else Ret = 2 End If End If End With CheckFolder = Ret End Function
> Excelのコントロールボックスを利用して、 「コントロールボックス」ってユーザーフォームのことですよね? 余計なお世話かとは思いますが、 非常に局部的な要望を質問されていますが、差しつかえなければ、 もう少し全体的な流れを補足していただくと、 「ああ、それならこういうやり方の方がいいですよ」ともっとスマートな アプローチ方法が回答されるかもしれません。 失礼ながら、間違った駅で降りてしまったことに気づかず、目的地までの ルートを訊いているようなこともあり得ますので... 老婆心ながら...
お礼
回答ありがとうございます。 コントロールボックスとユーザーフォームとは別物では? ユーザーフォームでも可能ならそれでもいいのですが・・・。 全体的な流れと言われても・・・ すみません。 VBAを使用しながら作成していきたいのですが、 それほど知識があるわけではないので 返答に困っています。 何か基本的な参考となるサイトや資料があれば 教えてください。
お礼
すごい考えていただいて、ありがとうございます。 教えていただいたVBAを実行してみます。