2017-10-18 14 views
0

私はVBAコードに苦労しています。テーブル内の固定値の代わりに、ワークブックの保存方法の名前が含まれています。私の範囲は可変である必要があります(範囲 "A3"で始まる例の下)。VBA - リストから複数のファイルを作成する

Sheets("CC").Select 'sheet with the names 
Range("A3").Select ' starting from this range are the names in a column 
Selection.Copy 
Sheets("CZK").Select 'going to different sheet to paste some value 
Range("B2").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False  'pasting values to different sheet 
Application.CutCopyMode = False 
Sheets("CC").Select  'returning back to the sheet with names 
Nazev = Range("A3") 
ActiveWorkbook.SaveAs Filename:=cesta & Nazev 'saving it with predefined path and name 

私はこのように起動する必要があります。

Set MyRange = Sheets("CC").Range("A3") ' predefining varible range 
Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

しかし、その後、私はこだわっています。 助けてくれてありがとう!

デビッドこのような何かがあなたのために働く必要があり

+1

https://stackoverflow.com/questions/([ '.Select' /' .Activate'を使用して回避する方法]を参照してください。 10714251)。データを直接操作する方法を明確にするのに役立ちます。 – BruceWayne

答えて

0

Sub tst() 

    Dim wb As Workbook 
    Dim wsNames As Worksheet 
    Dim wsDest As Worksheet 
    Dim NameCells As Range 
    Dim NameCell As Range 
    Dim cesta As String 
    Dim Nazev As String 

    cesta = "C:\Test\" 
    Set wb = ActiveWorkbook 
    Set wsNames = wb.Sheets("CC") 
    Set wsDest = wb.Sheets("CZK") 
    Set NameCells = wsNames.Range("A3", wsNames.Cells(wsNames.Rows.Count, "A").End(xlUp)) 

    Application.DisplayAlerts = False 
    For Each NameCell In NameCells 
     Nazev = NameCell.Value 
     wsDest.Range("B2").Value = Nazev 
     wb.SaveAs cesta & Nazev & ".xlsm", xlOpenXMLWorkbookMacroEnabled 
    Next NameCell 
    Application.DisplayAlerts = True 

End Sub 
関連する問題