excel vba-复制公式并生成新图纸

excel vba-复制公式并生成新图纸,vba,excel,scripting,Vba,Excel,Scripting,如果我有一个名为“值”的工作表,其中只有一列单元格,例如: ColumnA --------- emp_id emp_name dept_id ColumnA -------- ="select count(*) from tablex where "&a1&" is null;" ="select count(*) from tablex where length("&a1&") > 10;" ColumnB -------- Sheet for nu

如果我有一个名为“值”的工作表,其中只有一列单元格,例如:

ColumnA
---------
emp_id
emp_name
dept_id
ColumnA
--------
="select count(*) from tablex where "&a1&" is null;"
="select count(*) from tablex where length("&a1&") > 10;"

ColumnB
--------
Sheet for null
Sheet for length
然后是第二张名为“sql”的表格,其中有两列,单元格如下:

ColumnA
---------
emp_id
emp_name
dept_id
ColumnA
--------
="select count(*) from tablex where "&a1&" is null;"
="select count(*) from tablex where length("&a1&") > 10;"

ColumnB
--------
Sheet for null
Sheet for length
我需要生成以下两张输出图纸(每张图纸只有一列),需要什么VBA宏代码(注意,我需要在VBA中使用它,因为我只想单击一个按钮来生成图纸):


我想这会满足你的要求

我所做的一个更改是,在“sql”表上,我将单元格内容更改为如下所示:

="select count(*) from tablex where variable is null;"
因此,我使用了“variable”而不是您最初使用的“&a1&”,然后在代码中,它用emp\u id、emp\u name等正确值替换了这个词

    Sub GenerateSheets()
    Dim formulaRange As Range
    Dim formula As String
    Dim r As Range
    Dim destloc As Range
    Dim VariableRange As Range

    Set formulaRange = Worksheets("sql").Cells(1, 1)
    ' get each formula
    Do Until formulaRange.Value = ""
        For Each r In formulaRange.Rows
            ' for each formula found, create a new sheet and move it to end
            Worksheets.Add
            ActiveSheet.Name = r.Offset(0, 1).Value
            ActiveSheet.Move after:=Sheets(ActiveWorkbook.Sheets.Count)

            Set destloc = ActiveSheet.Cells(1, 1)
            Set VariableRange = Worksheets("values").Cells(1.1)
            ' Loop through all the variables
            Do Until VariableRange.Value = ""
                destloc.Value = Replace(formulaRange.Value, "variable", VariableRange.Value)

                Set VariableRange = VariableRange.Offset(1, 0)
                Set destloc = destloc.Offset(1, 0)
            Loop
        Next

        Set formulaRange = formulaRange.Offset(1, 0)
    Loop 
End Sub

您连接到哪个数据库?(其中是
表x
)。你已经试过什么了?甲骨文。为了得到这个简单的示例,working tablex是硬编码的,但将来我会将tablename放在每个字段名旁边的单元格中。我尝试过手动复制单元格,但我真的很想用vba节省时间。