用INDIRECT函式,但是得事先把所有的表名全部放在一起。比如全部表名已放在A列了,在B3輸入公式=INDIRECT(A3&"!C7"),就可以取得A3單元格里名稱的工作表C7的值了,向下複製公式,就可以全部取出來了。 因為無論如何你也要提取工作表名,下面給一個提取所有工作表名的程式Sub 取表名()Sheets.AddOn Error GoTo ErrorHandler " 開啟錯誤處理ActiveSheet.name = "表名"On Error GoTo 0Sheets("表名").Move After:=Sheets(Sheets.Count)For 表號 = 1 To Sheets.Count - 1 Cells(表號, 1).Value = Sheets("表名").name ActiveSheet.Hyperlinks.Add Anchor:=Cells(表號, 1).Address:="", SubAddress:=""" & Sheets("表號").name & ""!A1", TextToDisplay:=Sheets("表號").nameNextSheets("表名").SelectColumns("A:A").EntireColumn.AutoFitExit Sub " 退出ErrorHandler: " ´íÎó´¦Àí³ÌÐò¡£ Select Case Err.number Case 1004 Application.DisplayAlerts = False If MsgBox("工作表 表名 已存在,是否覆蓋?", vbYesNo) = vbYes Then ActiveSheet.Delete Sheets("表名").Cells.Delete Sheets("表名").Select Else ActiveSheet.Delete Sheets("表名").Select Exit Sub End If Application.DisplayAlerts = True End Select Resume " 將控制返回產生錯誤的語句End Sub
用INDIRECT函式,但是得事先把所有的表名全部放在一起。比如全部表名已放在A列了,在B3輸入公式=INDIRECT(A3&"!C7"),就可以取得A3單元格里名稱的工作表C7的值了,向下複製公式,就可以全部取出來了。 因為無論如何你也要提取工作表名,下面給一個提取所有工作表名的程式Sub 取表名()Sheets.AddOn Error GoTo ErrorHandler " 開啟錯誤處理ActiveSheet.name = "表名"On Error GoTo 0Sheets("表名").Move After:=Sheets(Sheets.Count)For 表號 = 1 To Sheets.Count - 1 Cells(表號, 1).Value = Sheets("表名").name ActiveSheet.Hyperlinks.Add Anchor:=Cells(表號, 1).Address:="", SubAddress:=""" & Sheets("表號").name & ""!A1", TextToDisplay:=Sheets("表號").nameNextSheets("表名").SelectColumns("A:A").EntireColumn.AutoFitExit Sub " 退出ErrorHandler: " ´íÎó´¦Àí³ÌÐò¡£ Select Case Err.number Case 1004 Application.DisplayAlerts = False If MsgBox("工作表 表名 已存在,是否覆蓋?", vbYesNo) = vbYes Then ActiveSheet.Delete Sheets("表名").Cells.Delete Sheets("表名").Select Else ActiveSheet.Delete Sheets("表名").Select Exit Sub End If Application.DisplayAlerts = True End Select Resume " 將控制返回產生錯誤的語句End Sub