【问题标题】:Create folders using values from Excel使用 Excel 中的值创建文件夹
【发布时间】:2021-02-09 01:52:20
【问题描述】:

这个地方救了我无数次,所以我又来了。我正在尝试使用 Visual Basic 从 excel 电子表格创建文件夹 - 我设法在网上找到了这个在一定程度上有效的简单解决方案 - 但是我也想使用来自相邻单元格的值:

Sub MakeFolders()
Dim Rng As Range
Dim maxRows, maxCols, r, c As Integer
Set Rng = Selection
maxRows = Rng.Rows.Count
maxCols = Rng.Columns.Count
For c = 1 To maxCols
r = 1
Do While r <= maxRows
If Len(Dir(ActiveWorkbook.Path & "\" & Rng(r, c), vbDirectory)) = 0 Then
MkDir (ActiveWorkbook.Path & "\" & Rng(r, c))
On Error Resume Next
End If
r = r + 1
Loop
Next c
End Sub

我猜它最终会看起来像......

(ActiveWorkbook.Path & "\" & Rng(r, c) & Rng(r, c).Offset(0, 12))

但老实说,我正抓着稻草,任何帮助都会很棒。

【问题讨论】:

  • “这个地方救了我无数次”...很好,但您似乎从未接受过您之前问题的任何答案:/

标签: vba excel


【解决方案1】:

您的代码旨在为每个选定的单元格创建单独的文件夹,并且工作正常。您是否希望通过将该行中所有列的值组合为文件夹名称来为每个选定的行创建 1 个单独的文件夹?

为了澄清,让我们说:
- A1 = xx1, B1 = xx2
- A2 = yy1, B2 = yy2

现有宏将创建 4 个文件夹:xx1xx2yy1yy2

如果您想要 2 个文件夹 xx1xx2yy1yy2,您可以进行一些更改,如下所示:

Sub MakeFoldersForEachRow()
    Dim Rng As Range
    Dim maxRows, maxCols, r, c As Integer
    Dim s As String
    Set Rng = Selection
    maxRows = Rng.Rows.Count
    maxCols = Rng.Columns.Count
    For r = 1 To maxRows
        s = ""
        For c = 1 To maxCols
            s = s & Rng(r, c)
        Next c
        If Len(Dir(ActiveWorkbook.Path & "\" & s, vbDirectory)) = 0 Then
            MkDir (ActiveWorkbook.Path & "\" & s)
            On Error Resume Next
        End If
    Next r
End Sub

【讨论】:

  • 效果很好,非常感谢。我已经设法调整它以添加垫片,所以它工作得很好。谢谢!
  • 很高兴知道它有帮助:)
猜你喜欢
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多