Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Vba 如何在我的另一段代码中使用输入框的结果?_Vba_Excel - Fatal编程技术网

Vba 如何在我的另一段代码中使用输入框的结果?

Vba 如何在我的另一段代码中使用输入框的结果?,vba,excel,Vba,Excel,所以我对VBA和编码非常陌生,一直在编写非常简单的SUB。sub从工作簿中获取一张工作表,复制到新工作簿中,然后保存它。问题是,我希望能够指定它在保存文档时使用的名称。我使用的是一个输入框,我似乎无法让代码接受结果。这是我的密码 Sub CC_Export() Dim name As String Dim Wb As Workbook Set Wb = Workbooks("workbook1") Wb.Sheets("Sheet1").Copy name = InputBox

所以我对VBA和编码非常陌生,一直在编写非常简单的SUB。sub从工作簿中获取一张工作表,复制到新工作簿中,然后保存它。问题是,我希望能够指定它在保存文档时使用的名称。我使用的是一个输入框,我似乎无法让代码接受结果。这是我的密码

Sub CC_Export()
Dim name As String
Dim Wb As Workbook

Set Wb = Workbooks("workbook1")
    Wb.Sheets("Sheet1").Copy
    name = InputBox("Enter Name of New Workbook", "New Workbook")
    ActiveWorkbook.SaveAs "name.xlsx", FileFormat:=51

End Sub

您的代码使用的是文本“name.xlsx”。要使用变量,需要将其值连接到文本字符串中

ActiveWorkbook.SaveAs name & ".xlsx", FileFormat:=51

只需将
“name.xlsx”
替换为
name
,因此您的代码应该如下所示:
ActiveWorkbook.SaveAs name,FileFormat:=51
编辑后的,以利用@Pawel Sotor answer中的隐式扩展假设,进一步缩短代码长度

罗里给了你答案

您可以将代码缩短如下:

Sub CC_Export()
    Workbooks("workbook1").Sheets("Sheet1").Copy
    ActiveWorkbook.SaveAs InputBox("Enter Name of New Workbook", "New Workbook"), FileFormat:=51
End Sub

我只想指出,使用这种方法,用户必须在
InputBox
中提供文件扩展名,我刚刚检查了这段代码,它在没有扩展名的情况下工作。Excel从
FileFormat:=51
属性获取扩展名。您完全正确。我忽略了
FileFormat
属性。谢谢,我会确保记下,如果我有正确的FileFormat属性,我以后可以跳过扩展!啊,谢谢!!我知道有办法,我花了很多时间在网上寻找解决办法。再次谢谢哇,是的,看起来好多了。谢谢你