Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 宏到";另存为;工作簿1单元格中的数据中的工作簿2_Vba_Excel - Fatal编程技术网

Vba 宏到";另存为;工作簿1单元格中的数据中的工作簿2

Vba 宏到";另存为;工作簿1单元格中的数据中的工作簿2,vba,excel,Vba,Excel,我是宏的基本用户,但现在陷入了以下困境。 我打开了两本作业本。我需要“另存为”并使用工作簿1中某个单元格中的文件名关闭工作簿2。宏正在工作簿1中运行。 对不起,这是我从互联网上能找到的最远的地方了。我猜最后一行有变化。哦,是的,我也不知道Dim是什么意思 Dim FName As String Dim FPath As String FPath = "G:" FName = Sheets("sheet 1").Range("A1").Text ThisWorkbook.SaveAs Fil

我是宏的基本用户,但现在陷入了以下困境。 我打开了两本作业本。我需要“另存为”并使用工作簿1中某个单元格中的文件名关闭工作簿2。宏正在工作簿1中运行。 对不起,这是我从互联网上能找到的最远的地方了。我猜最后一行有变化。哦,是的,我也不知道Dim是什么意思

Dim FName As String
Dim FPath As String

FPath = "G:"

FName = Sheets("sheet 1").Range("A1").Text

ThisWorkbook.SaveAs Filename:=FPath & "\" & FName 
Dim是在您的情况下对代码进行标注(声明变量)的方式,告诉代码
FName
将引用您指定的字符串值。有关详细的教程,请参见

要使代码正常工作,请尝试以下操作:

Dim FName As String
Dim FPath As String

FPath = "G:"

FName = ThisWorkbook.Sheets("sheet 1").Range("A1").Text 'use ThisWorkbook since you are running from Workbook1

With Workbooks("Workbook2.xlsx")
    .SaveAs Filename:=FPath & "\" & FName 
    .Close True '-> use false to not save changes
End With
'here you need to tell VBA what specific workbook you want to save
'if you used ThisWorkbook here, you would save the workbook where the code runs from, which is Workbook1
您也可以采取更好的方法,如:

Dim FName as String, FPath as String
Dim wkb1 as Workbook, wkb2 as Workbook

Set wkb1 = ThisWorkbook '-> or Set wkb1 = Workbooks("workbook1")

FPath = "G:"
FName = wkb1.Sheets("sheet 1").Range("A1").Text

Set wkb2 = Workbooks("workbook2")
With wkb2
    .SaveAs Filename:=FPath & "\" & FName
    .Close True '-> use false to not save changes
End With
Dim是在您的情况下对代码进行标注(声明变量)的方式,告诉代码
FName
将引用您指定的字符串值。有关详细的教程,请参见

要使代码正常工作,请尝试以下操作:

Dim FName As String
Dim FPath As String

FPath = "G:"

FName = ThisWorkbook.Sheets("sheet 1").Range("A1").Text 'use ThisWorkbook since you are running from Workbook1

With Workbooks("Workbook2.xlsx")
    .SaveAs Filename:=FPath & "\" & FName 
    .Close True '-> use false to not save changes
End With
'here you need to tell VBA what specific workbook you want to save
'if you used ThisWorkbook here, you would save the workbook where the code runs from, which is Workbook1
您也可以采取更好的方法,如:

Dim FName as String, FPath as String
Dim wkb1 as Workbook, wkb2 as Workbook

Set wkb1 = ThisWorkbook '-> or Set wkb1 = Workbooks("workbook1")

FPath = "G:"
FName = wkb1.Sheets("sheet 1").Range("A1").Text

Set wkb2 = Workbooks("workbook2")
With wkb2
    .SaveAs Filename:=FPath & "\" & FName
    .Close True '-> use false to not save changes
End With
你在正确的轨道上。 您只需将最后一个留置权更改为该留置权即可:

Workbooks("Workbook2Filename.xls").SaveAs Filename:=FPath & "\" & FName 
但是,我建议采用以下方法:

Dim FName As String
Dim FPath As String

Dim wbBook1 As Workbook
Dim wbBook2 As Workbook

Set wbBook1 = ActiveWorkbook
Set wbBook2 = Workbooks("Workbook2Filename.xls") 'assumed workbook 2 is already open

FPath = "G:"
FName = wbBook1.Sheets("sheet 1").Range("A1").Text

wbBook2.SaveAs Filename:=FPath & "\" & FName

Set wbBook1 = Nothing
Set wbBook2 = Nothing
Dim代表维度,这是告诉VBA如何创建一个变量来存储信息的方式

你在正确的轨道上。 您只需将最后一个留置权更改为该留置权即可:

Workbooks("Workbook2Filename.xls").SaveAs Filename:=FPath & "\" & FName 
但是,我建议采用以下方法:

Dim FName As String
Dim FPath As String

Dim wbBook1 As Workbook
Dim wbBook2 As Workbook

Set wbBook1 = ActiveWorkbook
Set wbBook2 = Workbooks("Workbook2Filename.xls") 'assumed workbook 2 is already open

FPath = "G:"
FName = wbBook1.Sheets("sheet 1").Range("A1").Text

wbBook2.SaveAs Filename:=FPath & "\" & FName

Set wbBook1 = Nothing
Set wbBook2 = Nothing

Dim代表维度,这是告诉VBA如何创建一个变量来存储信息的方式

因为其他的都有状态,Dim代表维度

从历史上讲,在各种BASIC(初学者的通用符号指令代码)编程语言中,除了必须声明的数组之外,不需要声明变量。因此,即使是非常古老的BASIC语言也有方法声明数组,这是使用“Dim”关键字完成的。当basic语言逐渐成熟并开始支持声明正则变量时,它们只是借用了已经在使用的关键字Dim。因此Dim代表维度,最初用于表示数组的大小和/或边界,但用于声明任何类型的变量


另一方面,随着编程语言的发展,其语言设计者通常不会引入新的关键字,因为这样做通常会破坏现有的程序。例如,如果他们引入了“var”关键字,它可能会破坏许多使用“var”作为变量名的现有程序。随着语言的发展,发现一个现有的关键字或多或少地被重新调整用途以增加功能,这种情况并不少见。

因为其他关键字都有state,Dim代表维度

从历史上讲,在各种BASIC(初学者的通用符号指令代码)编程语言中,除了必须声明的数组之外,不需要声明变量。因此,即使是非常古老的BASIC语言也有方法声明数组,这是使用“Dim”关键字完成的。当basic语言逐渐成熟并开始支持声明正则变量时,它们只是借用了已经在使用的关键字Dim。因此Dim代表维度,最初用于表示数组的大小和/或边界,但用于声明任何类型的变量


另一方面,随着编程语言的发展,其语言设计者通常不会引入新的关键字,因为这样做通常会破坏现有的程序。例如,如果他们引入了“var”关键字,它可能会破坏许多使用“var”作为变量名的现有程序。随着语言的发展,发现一个现有的关键字或多或少地被重新调整用途以增加功能,这种情况并不少见。

。很有魅力。很棒@user1706708。如果您觉得这解决了您的问题,那么请检查它作为答案,以便其他人可以在未来受益。对不起,伙计们,如果我需要,我还需要关闭工作簿2can@user1706708. 我已经编辑了上面的两段代码。关闭工作簿非常简单:)很漂亮。很有魅力。很棒@user1706708。如果您觉得这解决了您的问题,那么请检查它作为答案,以便其他人可以在未来受益。对不起,伙计们,如果我需要,我还需要关闭工作簿2can@user1706708. 我已经编辑了上面的两段代码。关闭工作簿非常简单:)对不起,伙计们,如果我能理解,我还需要关闭工作簿2,没问题。我认为这就是为什么在不同的帖子中问两个不同的问题(即使它们是相关的)是最好的礼节,这样你就可以独立地接受这两个答案。干杯。抱歉,伙计们,如果我能理解,我还需要关闭工作簿2,没问题。我认为这就是为什么在不同的帖子中问两个不同的问题(即使它们是相关的)是最好的礼节,这样你就可以独立地接受这两个答案。干杯