Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 文本框输入字符串并重复使用_Excel_Vba - Fatal编程技术网

Excel 文本框输入字符串并重复使用

Excel 文本框输入字符串并重复使用,excel,vba,Excel,Vba,我希望能够在一个文件夹中获取x个文件,并将它们全部放在同一工作簿的不同工作表上 我发现这个代码是有效的 Public Sub consolWB() Dim FSO As Object Dim folder As Object, subfolder As Object Dim wb As Object Set FSO = CreateObject("Scripting.FileSystemObject") folderPath = "C:\Users\

我希望能够在一个文件夹中获取x个文件,并将它们全部放在同一工作簿的不同工作表上

我发现这个代码是有效的

Public Sub consolWB()
    Dim FSO As Object
    Dim folder As Object, subfolder As Object
    Dim wb As Object



    Set FSO = CreateObject("Scripting.FileSystemObject")
    folderPath = "C:\Users\patrickw\Desktop\exceltest"
    Set folder = FSO.GetFolder(folderPath)

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
        .EnableEvents = False
        .AskToUpdateLinks = False
    End With

    For Each wb In folder.Files
        If Right(wb.Name, 3) = "xls" Or Right(wb.Name, 4) = "xlsx" Or Right(wb.Name, 4) = "xlsm" Then
            Set openWB = Workbooks.Open(wb)
            For Each ws In openWB.Worksheets
                ws.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)


            Next ws
            openWB.Close
        End If
    Next wb

    With Application
        .DisplayAlerts = True
        .ScreenUpdating = True
        .EnableEvents = True
        .AskToUpdateLinks = True
    End With


End Sub
但是,这只起作用,因为我已经为它设置了要查看的目标文件路径

我想创建一个按钮,提示用户输入文件路径,然后使用该文件路径导入文件

我想我必须使输入成为一个字符串,然后在上面的代码中使用这个变量

这可能吗

在上面的例子中,新的工作表被称为“sheet1…”是否可以自己命名这些工作表


谢谢

在按钮单击事件中包含以下内容,然后在其他代码中使用path变量

Dim path As String
path = InputBox("Enter a file path")
如果需要访问表单外部的变量,则可以将
path
声明为模块级
Public
字段:

Public path As String

Private Sub CommandButton1_Click()

 path = InputBox("Enter a file path")

End Sub

Private Sub CommandButton2_Click()
 Debug.Print path
End Sub
或者,如果
path
不应该从表单外部分配,则最好用属性封装它:

Private path As String

Public Property Get SelectedPath() As String
    SelectedPath = path
End Property

Private Sub CommandButton1_Click()
    path = InputBox("Enter a file path")
End Sub
这样,表单外的代码可以读取
SelectedPath
,但不能写入私有字段或修改属性值


考虑了<代码>输入框< /代码>,以获得更好的用户体验和更容易的输入验证。

在您的ButoNoLCKIT事件中有以下内容,然后在其他代码中使用PATH变量。

Dim path As String
path = InputBox("Enter a file path")
如果需要访问表单外部的变量,则可以将
path
声明为模块级
Public
字段:

Public path As String

Private Sub CommandButton1_Click()

 path = InputBox("Enter a file path")

End Sub

Private Sub CommandButton2_Click()
 Debug.Print path
End Sub
或者,如果
path
不应该从表单外部分配,则最好用属性封装它:

Private path As String

Public Property Get SelectedPath() As String
    SelectedPath = path
End Property

Private Sub CommandButton1_Click()
    path = InputBox("Enter a file path")
End Sub
这样,表单外的代码可以读取
SelectedPath
,但不能写入私有字段或修改属性值


考虑了<代码>输入框< /代码>,以获得更好的用户体验和更容易的输入验证。

< P>这样,用户只需单击、单击和单击即可。您不必检查输入文件夹路径是否正确

Sub GetFolder()
    Dim FD As Office.FileDialog
    Dim FolderPath as string
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)
    FD.Show

    FolderPath = FD.SelectedItems(1)
    Msgbox FolderPath
End Sub

这样,用户只需点击,点击,点击。您不必检查输入文件夹路径是否正确

Sub GetFolder()
    Dim FD As Office.FileDialog
    Dim FolderPath as string
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)
    FD.Show

    FolderPath = FD.SelectedItems(1)
    Msgbox FolderPath
End Sub


您希望他们将所需内容输入框中,输入单元格中,还是打开一个可以浏览和选择文件夹的框?我最初想要一个下拉框,他们可以选择正确的文件。无论采用哪种方式,我都必须能够在另一个宏中使用该字符串作为查找,如果这样做有意义的话?下面是一个我刚刚尝试过的示例,它实际打开了文件。我只希望用户以字符串形式输入文件目录。然后我想在我的另一个“consolidate”宏中使用这个字符串,该宏将引入该文件夹中的3个文件。如果你停下来思考一分钟,而不是盲目地复制/粘贴来自Internet上随机陌生人的代码,你就会意识到它正在打开文件,因为有
工作簿。Open
调用。查看代码并理解它,并使其适应您的需要;不要只是拼凑粘贴你的代码与随机位和碎片收集在网上@QHarr的例子正是您所需要的。您希望他们将所需内容输入框中,输入单元格中,还是打开一个可以浏览和选择文件夹的框?我最初想要一个下拉框,他们可以选择正确的文件。无论采用哪种方式,我都必须能够在另一个宏中使用该字符串作为查找,如果这样做有意义的话?下面是一个我刚刚尝试过的示例,它实际打开了文件。我只希望用户以字符串形式输入文件目录。然后我想在我的另一个“consolidate”宏中使用这个字符串,该宏将引入该文件夹中的3个文件。如果你停下来思考一分钟,而不是盲目地复制/粘贴来自Internet上随机陌生人的代码,你就会意识到它正在打开文件,因为有
工作簿。Open
调用。查看代码并理解它,并使其适应您的需要;不要只是拼凑粘贴你的代码与随机位和碎片收集在网上@QHarr的例子正是你需要的。这就是我想要的!我单击第一个按钮并进入目录,但是,当我单击第二个按钮时,我得到一条运行时错误5消息,现在是“consolidate”宏中的新行;folderPath=pathGreat。如果符合您的要求,请接受作为答案,以便关闭。我添加了如何在按钮之间传递。这就是我想要的!我单击第一个按钮并进入目录,但是,当我单击第二个按钮时,我得到一条运行时错误5消息,现在是“consolidate”宏中的新行;folderPath=pathGreat。如果符合您的要求,请接受作为答案,以便关闭。我已经添加了如何在按钮之间传递。谢谢,我刚刚尝试过,但如何将其合并到我的初始代码中?最简单的方法是用我的代码替换
folderPath=“C:\Users\patrickw\Desktop\exceltest”
。向上投票,但这应该是一个返回
字符串的
私有函数。谢谢,我刚刚试过,但如何将其合并到我的初始代码中?最简单的方法是用我的代码替换
folderPath=“C:\Users\patrickw\Desktop\exceltest”
。向上投票,但这应该是一个
私有函数,返回
字符串。