• 締切済み

エクセルのコントロールボックスの利用方法がわからず困っています。

Excelのコントロールボックスを利用して、 1.テキストボックスに記載した名前のフォルダを   例えば、デスクトップに作成する方法。 2.コンボボックスのリストから、   例えば「A」を選択すると、   「A」に関連したファイル(既にデスクトップに作成済み)を   1.で作成したフォルダに   保存する方法。 を教えてください。

みんなの回答

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

こんばんは。 そのご質問は、たぶん、思っているよりも、難しいですね。 以下で、その動きを確認してみてください。ただ、私の考えていた方法が、理由は良く分からないのですが、こういうイベント型の起動が、気に入らないので変えてしまう人もいるようです。ただ、私自身は、いきなり起動するというのは、安全上、どうかなって思うからです。なお、当たり前のことですが、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

auidokddi
質問者

お礼

すごい考えていただいて、ありがとうございます。 教えていただいたVBAを実行してみます。

noname#79209
noname#79209
回答No.1

> Excelのコントロールボックスを利用して、 「コントロールボックス」ってユーザーフォームのことですよね? 余計なお世話かとは思いますが、 非常に局部的な要望を質問されていますが、差しつかえなければ、 もう少し全体的な流れを補足していただくと、 「ああ、それならこういうやり方の方がいいですよ」ともっとスマートな アプローチ方法が回答されるかもしれません。 失礼ながら、間違った駅で降りてしまったことに気づかず、目的地までの ルートを訊いているようなこともあり得ますので... 老婆心ながら...

auidokddi
質問者

お礼

回答ありがとうございます。 コントロールボックスとユーザーフォームとは別物では? ユーザーフォームでも可能ならそれでもいいのですが・・・。 全体的な流れと言われても・・・ すみません。 VBAを使用しながら作成していきたいのですが、 それほど知識があるわけではないので 返答に困っています。 何か基本的な参考となるサイトや資料があれば 教えてください。