1

我是宏的基本用户,但现在陷入了以下困境。我打开了两本工作簿。我需要“另存为”并使用工作簿 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 
4

3 回答 3

3

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
于 2012-09-28T15:46:00.883 回答
2

正如其他人有状态一样, Dim 代表维度。

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

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

于 2012-09-28T20:34:41.730 回答
1

你在正确的轨道上。您可以将最后一个留置权更改为此,它会起作用:

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 代表 Dimension,它是您告诉 VBA 创建一个变量来存储信息的方式。

于 2012-09-28T15:48:14.410 回答