2016-01-24 36 views
-1

有两个表单。VBA将单元格值替换为循环显示另一个表单中的列表并保存

- 在Sheet1的单元格“A1”,我想它的价值从列表中Sheet2中

改变

- 在Sheet2中,有10人的名单。我想遍历列表并替换Sheet1中的单元格值“A1”。

- 将单元格“A1”替换为一个名称(取自10个名称列表),我想根据它的名称保存该excel文件并重复该过程10次。理想情况下,我会将10个Excel文件保存为该列表中的10个不同名称,每个名称都包含Sheet1中“A1”中的单元格值。 (例如,如果列表中的名称之一是Anne,Sheet1中的“A1”将具有Anne &它将在excel文件中保存为“Anne”如果我可以获得VBA代码以避免手动执行此操作, 。这将是很好

+0

你能重新选择正确的答案,并可能修改你原来的问题。 – Davesexcel

回答

0

首先,你需要开发功能区设立接下来创建一个宏,这里是我的代码:

Sub Macro1() 
Sheets("Sheet2").Activate 
Range("A1").Select 

Do While True 
    If Selection.Value = "" Then 
     Exit Do 
    Else 
     Selection.Copy 
     Sheets("Sheet1").Activate 
     Range("A1").Activate 
     ActiveSheet.Paste 

     ActiveWorkbook.SaveAs Filename:="C:\Users\jared_000\Desktop\" & Selection.Value & ".xlsm", _ 
      FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 

     Sheets("Sheet2").Activate 
     Selection.Offset(1, 0).Select 

    End If 
Loop 
End Sub 

有名称的列表后空白单元格是非常重要的在Sheet2中(这是我停止循环的条件,你可以将这个宏设置为一个热键或者使用Developer Ribbon创建一个按钮(我的首选项)如果你不想让它们有一个支持宏的工作簿,那么FileFormat将xlWorkbookNormal。我已经包括一个屏幕t按钮的样子以及桌面上的最终结果。希望这可以帮助!

Button

Desktop

+0

非常感谢Jared。对于要保存的文件名,实际上有一个单元格“C18”,其中值Sheet1中单元格“A1”更改时值会自动更改。要使用C18中的任何值来命名文件,我如何修改代码? –

+0

@ScottJ - 你没有在你原来的问题中提到过,你写道:“例如,如果列表中的名字之一是Anne,Sheet1中的”A1“将会有Anne,并且它会被保存为”Anne“在Excel文件“ – Davesexcel

+0

我道歉不提在我的问题。我想我试图简化太多。 –

0

将工作表复制到新工作簿,你只需要,Sheets("Sheet1").copy

所以遍历Sheet2的列表,列表中放置到工作表Sheet1范围( “A1” ),然后复制并保存工作表。

这将节省纸张作为,.XLSX工作簿

Sub Button1_Click() 
    Dim sh As Worksheet 
    Dim ws As Worksheet 
    Dim rng As Range, LstRw As Long, c As Range 
    Dim a As Range 
    Dim dir As String 

    dir = "C:\Users\Dave\Downloads\MyFolder\" 'change folder location, make sure you have the "\" at the end 
    Set sh = Sheets("Sheet1") 
    Set a = sh.Range("A1") 
    Set ws = Sheets("Sheet2") 
    Application.DisplayAlerts = 0 
    Application.ScreenUpdating = 0 

    With ws 

     LstRw = .Cells(.Rows.Count, "A").End(xlUp).Row 
     Set rng = .Range("A1:A" & LstRw) 

     For Each c In rng.Cells 

      a = c 
      sh.Copy 
      ActiveWorkbook.SaveAs Filename:=dir & sh.Range("C18").Value & ".xlsx", _ 
            FileFormat:=xlOpenXMLWorkbook 
      ActiveWorkbook.Close 
     Next c 

    End With 

End Sub 
+0

已编辑的代码将工作簿保存为Sheet1.Range(“C18”) – Davesexcel

+0

谢谢Davesexcel –

相关问题