如何使用VBA选择随机更改XLS工作簿文件名

时间:2014-03-01 17:24:24

标签: excel-vba vba excel

程序创建并打开随机文件名结尾的XLS工作簿。例如:工作,工作(0-500),工作(0-599)。此工作簿尚未保存。不需要保存工作簿。

Windows("Jobs(0-178)").Activate

只有文件名相同时,此VBA才有效。

我想创建Excel宏来将作业(0-500)中的数据复制到我的工作簿。

有人可以帮忙吗?

感谢。

更新:

目前,如果文件名是特定的,我的VBA只能读取wordbook名称,即“实验室中的作业”。如果输出文件名改变了,E.G:“实验室中的作业(0-123),宏无法读取它。

以下是我目前的VBA,

Sub StartMacro()
Windows("Jobs in Lab").Activate
Range("A1:P500").Select
Selection.Copy
Windows("Jobs in Lab - Macro.xlsm").Activate  
End Sub

我尝试过使用

Sub Sample()
    Dim wb As Workbook

    For Each wb In Application.Workbooks
        If wb.Name Like "Jobs in Lab*" Then
            wb.Activate
            Exit Sub
        End If
    Next wb
End Sub

但是,如果我先保存工作簿,这个VBA才有效。

1 个答案:

答案 0 :(得分:0)

您可以尝试打开FileDialog以允许用户选择工作簿,打开它,并在代码中使用文件名

类似

function GetFilePath() as string

    Set myFile = Application.FileDialog(msoFileDialogOpen)
    With myFile
        .Title = "Choose File"
        .AllowMultiSelect = False
        If .Show <> -1 Then
            GetFilePath
            Exit Sub
        End If
        GetFilePath= .SelectedItems(1)
    End With

End function

并在您的代码中使用:

dim sFilename as string
sFileName=GetFilePath

if sFileName<>"" then
    workbooks(sFileName).open
    ' copy the data
end if

你也可以使用:

sfilename = Application.GetOpenFilename

HTH 菲利普