【发布时间】:2016-08-05 07:22:08
【问题描述】:
下面的代码在我的活动工作表中复制“ADXL364”表,但是如果它包含“XL364”或“364”,我可以复制该表
如果我把星号 'C:\data[adxl364.xls]*ADXL364_QC'!A1 在我的代码中它不起作用。
Sub GetRange()
With Range("A:Z")
.Formula = "=If('C:\data\[adxl364.xls]ADXL364_QC'!A1 > 0,'C:\data\[adxl364.xls]ADXL364_QC'!A1,Text(,))"
.Formula = .Value
End With
End Sub
长代码将从用户那里获取文件的位置,然后复制包含 ADXL364 或 XL364
的工作表With ActiveWorkbook
Sheets.Add.Name = "Flow_table"
Application.EnableEvents = False
TP_location = Left(TextBox1.Value, InStrRev(TextBox1.Value, "\"))
TP_filename = Right(TextBox1.Value, Len(TextBox1.Value) - InStrRev(TextBox1.Value, "\"))
TP_filename = "[" & TP_filename & "]"
TP_formula = "'" & TP_location & TP_filename & TextBox2.Value & "'!A1"
getcellvalue = "=if(" & TP_formula & ">0," & TP_formula & "," & """"")"
With Range("A:Z")
.Formula = getcellvalue
.Formula = .Value
End With
Sheets.Add.Name = "Job_lists"
End With
Unload UserForm2
End Sub
【问题讨论】:
-
复制发生在哪里?
-
对于单元格 A1,写入该单元格的公式为 =If('C:\data[adxl364.xls]ADXL364_QC'!A1 > 0,'C:\data[adxl364.xls]ADXL364_QC '!A1,"")。循环发生在从 A 到 Z。所以也许正确的术语是从封闭的工作簿中引用一个单元格
-
您可以尝试编辑路径位置并选择要“引用”的工作表并将模块粘贴到新工作表中。它会给你一份参考表的副本。在这种情况下,ADXL364 表,范围 A 到 Z
-
你知道你可以在没有 VBA 的情况下解决这个问题吗?在单元格中计算您想要的公式(作为字符串),然后在该单元格上使用
INDIRECT()。 -
@iDevlop 这很酷。但是,它需要 VBA,因为文件和工作表的位置是动态的。这是完整的代码。