vba - 用户选择(工作簿和工作表名称)然后复制和粘贴

标签 vba excel button

有没有办法让用户在打开文件后选择要复制的工作表?

我想这样做是因为可能有多个格式相同但名称不同的工作表。

例子:
名为 的原始工作簿VSC (包含表格 比较 绘图 )

名为 的辅助工作簿顺丰 (包含工作表 结果 1 结果2 结果3 )

用户点击 上的按钮VSC , 文件对话框打开,用户选择 顺丰在某个目录中,然后要求用户选择要选择的工作表 - 用户选择 结果2 工作表,复制数据(范围“B2:B5”),然后将其粘贴回 比较 床单。

这可能吗?我不知道如何开始。

当前要求用户选择 SF 工作簿的代码:

Sub GetFilePath()
Dim objFSO as New FileSystemObject

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

最佳答案

这是一种方法。您输入工作表名称。调整复制和粘贴范围以适应。

Sub GetFilePath()

Dim objFSO As New FileSystemObject, w As String, wb As Workbook

Application.ScreenUpdating = False

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

w = InputBox("Enter sheet name")

If SheetExists(w) Then
    wb.Sheets(w).Range("B2:B5").Copy
    ThisWorkbook.Sheets("Compare").Range("A1").pastespecial xlvalues
Else
    MsgBox "Sheet not found"
End If

wb.Close False

Application.ScreenUpdating = True

End Sub

Function SheetExists(s As String) As Boolean

Dim x    
On Error GoTo NextSheet
x = ActiveWorkbook.Sheets(SheetName).Name
SheetExists = True
Exit Function    
NextSheet:
    SheetExists = False    
End Function

关于vba - 用户选择(工作簿和工作表名称)然后复制和粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50047634/

相关文章:

excel - 使用 POI jar 获取 Excel SheetNames

vba - 将单元格地址的位置存储到 VBA 中的变量中

python - 带有图像的 Tkinter 按钮有边框

javascript - 提交后更改表单提交按钮文本

excel - 当打开另一个具有相似工作表的工作簿时,VBA 用户定义函数返回#VALUE

vba - 是否可以在运行时修改 Excel VBA 引用(在运行时加载加载项之后)?

VBA .font.bold 优化

VBA 使用 Internet Explorer 11 自动下载文件

arrays - VBA从数组中定义一个范围

java - Android:在一个布局中使用 2 个布局