excel - 将多个文件拖放到用户窗体

标签 excel vba drag-and-drop

我正在尝试将多个文件拖放到用户窗体上以获取它们的路径。感谢this,我用一个文件管理了它.

当我将 FilePath = Data.files(1) 更改为 FilePath = Data.Files(2)(i) 时,我收到消息“预期表”。我应该创建一个表并重新调整它吗?

到目前为止我的工作:

这个可以完成这项工作(打开文件并将其复制到选定的工作表中)

Dim Wb, FilePath As String
Dim WbIni, WbCib As Workbook

Private Sub CommandButton2_Click()

If FilePath = vbNullString Then
    MsgBox "Aucun fichier n'a été importé", vbCritical, "Anomalie"
    Unload UserForm1
    Exit Sub
End If

Set WbCib = Workbooks.Open(Filename:=FilePath)
MsgBox WbCib.Name

i = WbCib.ActiveSheet.Range("A1").End(xlDown).Row
WbCib.ActiveSheet.Range("A1:A" & i).Copy
ActiveSheet.Paste Destination:=WbIni.Worksheets("Target").Range("A1:A" & i)
WbIni.Sheets("Target").Activate
WbCib.Close

Unload UserForm1

End Sub

这个初始化我的 TreeView 以进行拖放

Private Sub UserForm_Initialize()
Wb = ThisWorkbook.Name
Set WbIni = ActiveWorkbook

TreeView1.OLEDropMode = ccOLEDropManual
End Sub

这给了我文件路径。我想我需要循环它。

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)

    FilePath = Data.Files(1)
    Workbooks(Wb).Activate

    MsgBox FilePath

End Sub

最佳答案

感谢 @R.Roe 的评论,我成功地做到了我想做的事:

Dim x, y As Integer
Dim PathTable As String
Dim FilePath As Variant

Private Sub TreeView1_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
Dim i As Integer

Workbooks(Wb).Activate

'Counting file paths I dropped
For Each FilePath In Data.Files()
    i = i + 1
Next FilePath

'Redim my table
ReDim PathTable(i)

i = 1

'Adding data to my table
For x = 0 To UBound(PathTable) - 1
    PathTable(x) = Data.Files(i)
    i = i + 1
Next x

'Just to make sure it works
For x = 0 To UBound(PathTable) - 1
    MsgBox PathTable(x)
Next x

End Sub

干杯!

关于excel - 将多个文件拖放到用户窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190552/

相关文章:

excel - 如何每隔一分钟保存一个 Excel 文件?

javascript - 如何从vba中查找和调​​用javascript方法

VBA Outlook 自动将文件夹中的所有电子邮件标记为已读

javascript - 如何使div可拖放

c++ - QFileInfo::isExecutable() 为 ".exe"文件返回 false

excel - 在 ActiveSheet.Calculate 期间更新图表

excel - vba字符串变量中的上标字母

excel - 基于在 Excel 中的每一行中为不确定的行数确定的值的条件格式

vba - 在 Microsoft Word 的 VBA 宏中的查找和替换功能中使用通配符

java - 在 chrome 中,我的拖放 Java 小程序没有获取放置事件,chrome 在 Mac 上不支持吗?