从工作簿1的单元格中的数据“另存为”工作簿2的宏

时间:2012-09-28 15:39:30

标签: excel vba excel-vba

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

3 个答案:

答案 0 :(得分:2)

Dim是你如何Dimension(声明你的变量),在你的情况下,告诉代码FName将引用你指定的字符串值。有关精彩的教程,请参阅This link

要让您的代码正常运行,请尝试以下方法:

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

答案 1 :(得分:2)

当其他人有状态时,Dim代表维度。

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

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

答案 2 :(得分: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制作一个变量来存储信息。