dポイントプレゼントキャンペーン実施中!

エクスプローラからファイルを選択して、ワードもしくはエクセルにD&Dしファイル名を取得したいと思います。

VBだとOleDragDropでいけるようですが、VBAにはこのイベントがありません。

ということは、無理ってことなのでしょう赤?

A 回答 (3件)

こんにちは。



Excelしかやったことがありませんが、エクスプローラを開いて、ドラッグ&ドロップすれば、ふつう、そのままでいけるはずですが?

それにチェック機能をつけるのでしたら、Office では、ユーザーフォームの[ツール]メニューの、[その他のコントロール]で、Microsoft Listview Control (SP4) があるかと思います。そのListview Control に 以下のように、OleDragDrop イベントをつければよいと思います。

以下のコードでは、Explorer は、自分で閉じてください。

Excelの場合。
サンプルコード

'<UserFormモジュール以外>
Sub uformShow()
Dim myPath As String, myID As Double
myPath = ThisWorkbook.Path
myID = Shell("Explorer.exe /e, /root," & myPath, vbNormalFocus)
If myID = 0 Then Exit Sub
UserForm1.Show 0
End Sub

'<ユーザーフォームモジュール>
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, _
                 Effect As Long, Button As Integer, _
                 Shift As Integer, x As Single, y As Single)

Dim i As Long
With Me
  AppActivate Me.Caption
  .ListView1.ListItems.Clear
  If Data.Files.Count < 1 Then Exit Sub
  For i = 1 To Data.Files.Count
   If InStrRev(Data.Files(i), "xls") > 0 Then
    Workbooks.Open (Data.Files(i))
   Else
    MsgBox "Excelの標準ファイルではありません。", vbCritical
   End If
  Next i
End With
End Sub

Private Sub UserForm_Activate()
  With Me.ListView1
    .OLEDragMode = 1
    .OLEDropMode = 1
    .View = 2
  End With
End Sub
    • good
    • 4
この回答へのお礼

ListViewにOleのイベントがあったんですね。

こっちらでも確認できました。

どうもありがとうございました。

また、よろしくお願いします。

お礼日時:2005/07/05 18:41

>VBだとOleDragDropでいけるようですが



FormにVBのコントロールを貼り付ける、という手がありますね。
VB6のPictureBoxあたりでUserControlを作って、OleDragDropイベントを継承していれば実現できますが、ExcelやWord単体だと難しいかもしれませんね。

ちなみにOleDragDropを持っているDataGridをFormに貼り付けて、DragModeをManualにすれば取得は可能でした。

この回答への補足

こんにちは、どうもありがとうございます。

VB6の入っていない環境もあるので、

Application.Dialogs(xlDialogOpen).Show

あたりでファイルを指定することにします。

また、よろしくお願いします。

補足日時:2005/07/05 12:37
    • good
    • 0

フォーム(経由)を使えば可能かも



BeforeDragOver イベント
BeforeDropOrPaste イベント
DataObject オブジェクト

この回答への補足

ありがとうございます。

どうもForm上のDragOverした時点でXで進入禁止っぽいです。

(涙;

補足日時:2005/07/04 23:12
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A