Board logo

標題: sheet name 問題 [打印本頁]

作者: basarasy    時間: 2010-7-27 17:09     標題: sheet name 問題

本帖最後由 basarasy 於 2010-7-27 17:15 編輯

我在book1 打vba  open book2   

  MyName=sheet1.name 有問題.
我是想要book2的sheet1.name
作者: jackdream    時間: 2010-7-27 18:25

回復 1# basarasy

如果確定開啟的檔名是 book2.xls
語法請改為 MyName = Workbooks("book2.xls").Sheets(1).Name
作者: kimbal    時間: 2010-7-27 19:07

補充:

工作表上顯示的名
MyName = Workbooks("book2.xls").Sheets("Sheet1").Name
也是就是 sheet1 ....

如果你曾經在vbe那邊把sheet改了名為 abc
abc.name = "sheet1"
abc.codename = "abc"
作者: basarasy    時間: 2010-7-27 19:21

回復 3# kimbal
不可以這樣嗎?
MyName = Workbooks("book2.xls").Sheet1.Name
不想每次sheet改了名 都要到vba 改.
作者: kimbal    時間: 2010-7-27 19:48

直接這樣來呼叫也可以吧
Workbooks("book2.xls").Sheets("Sheet1")

為何一定要用 sheet1.xxx?
作者: basarasy    時間: 2010-7-27 19:53

回復 5# kimbal
因為我想要 sheet1.name   用這個sheet改名了都可以run到
eg.  sheet1(sheet1)>sheet1(人名)
作者: luhpro    時間: 2010-7-27 20:04

回復 6# basarasy

我覺得 2# 的 Sheets(1).Name 應該就是你想要的答案了啊?

不管你的 Sheet name 如何變更,
只要確定是抓 第 n 個 Sheet,
否則你若用 Sheets("Sheet1") 之類的方式,
已經就定死了你要找的 Sheet name 了不是嗎?
作者: basarasy    時間: 2010-7-27 20:13

回復 7# luhpro

問題是這個有錯,不能用.
    MyName = Workbooks("book2.xls").Sheet1.Name
作者: jackdream    時間: 2010-7-27 20:28

問題是這個有錯,不能用.
    MyName = Workbooks("book2.xls").Sheet1.Name
basarasy 發表於 2010-7-27 20:13


是 MyName = Workbooks("book2.xls").Sheets(1).Name
作者: basarasy    時間: 2010-7-27 20:47

回復 9# jackdream
Workbooks("book2.xls").Activate
MyName = Sheets(1).Name 這句是左邊到右第1個sheet
如果亂了  sheet3 sheet2 sheet1  就不能指定sheet1了.
作者: luhpro    時間: 2010-7-27 20:50

本帖最後由 luhpro 於 2010-7-27 21:03 編輯

回復 9# jackdream

剛剛測試發現真的不能用,
因為會出現 "陣列索引超出範圍" 的錯誤訊息.

With Workbooks(1)
  MyName = .Sheets(1).Name
End With
上面這樣可以.

With Workbooks("spss.xls")
  MyName = .Sheets(1).Name
End With
上面這樣就不接受

可能需要用其他方式來引用,
這也是我覺得 Excel VBA 最不人性的地方,
很多地方明明直覺的應該這樣就對偏偏就是不能用. > <
==========================================================================================================
回復 6# basarasy
回復  kimbal
因為我想要 sheet1.name   用這個sheet改名了都可以run到
eg.  sheet1(sheet1)>sheet1(人名 ...
basarasy 發表於 2010-7-27 19:53


回復 10# basarasy
回復 9# jackdream
Workbooks("book2.xls").Activate
MyName = Sheets(1).Name 這句是左邊到右第1個sheet
如果亂了  sheet3 sheet2 sheet1  就不能指定sheet1了.  


你上面這兩個敘述似乎有邏輯上的疑義,
一方面你希望 Sheet 改名了VBA程式仍然可以參考到原來那個Sheet(序列位置不變)
另一方面你又希望Sheet 改名了VBA上被雙引號括弧的名稱文字能跟著改好參考到相同名稱的Sheet.(序列位置不一樣了)
這樣好像不太可能做到.
作者: kimbal    時間: 2010-7-27 21:31

名字不知道,姓氏不知道,住在那裡都不知道...

或者,可以用頁內容來分 a1/a2...有些什麼就開始工作之類
作者: basarasy    時間: 2010-7-27 21:34

回復  jackdream

很多地方明明直覺的應該這樣就對偏偏就是不能用.
With Workb ...
luhpro 發表於 2010-7-27 20:50


'很多地方明明直覺的應該這樣就對偏偏就是不能用. '
   me2
那麼有方法look了 sheet1至sheet3不能 移動?
作者: luhpro    時間: 2010-7-27 21:50

'很多地方明明直覺的應該這樣就對偏偏就是不能用. '
   me2
那麼有方法look了 sheet1至sheet3不能 移 ...
basarasy 發表於 2010-7-27 21:34


我想應該不是 Sheet 能不能移動位置的問題,
而是應該要先確認你抓取資料 Sheet 的基準在哪,
看是要以 Sheet 的 "Name 文字" 為標的,
還是要以 Workbook 上的 "第幾個"  Sheet 為標的.
作者: Hsieh    時間: 2010-7-27 22:11

回復 10# basarasy
  1. Dim sh As Worksheet
  2. With Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
  3. For Each sh In .Sheets
  4.    If sh.CodeName = "Sheet1" Then MyName = sh.Name
  5. Next
  6. End With
複製代碼

作者: basarasy    時間: 2010-7-28 15:35

回復 15# Hsieh

謝謝強大的Hsieh 大大.
如果用3個sheet name 這樣寫對嗎

Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
With Workbooks.Open(ThisWorkbook.Path & "\book2.xls")
For Each sh1,sh2,sh3 In .Sheets
   If sh1.CodeName = "Sheet1" Then MyName1 = sh.Name
  If sh2.CodeName = "Sheet1" Then MyName2 = sh.Name
  If sh3.CodeName = "Sheet1" Then MyName3 = sh.Name
Next
End With
作者: Hsieh    時間: 2010-7-28 17:41

本帖最後由 Hsieh 於 2010-7-28 17:45 編輯

回復 16# basarasy


    你的代碼能運行嗎?
先把基本語法搞懂
http://forum.twbts.com/viewthread.php?tid=33&extra=page%3D1
作者: basarasy    時間: 2010-7-29 17:31

本帖最後由 basarasy 於 2010-7-29 17:34 編輯

回復 17# Hsieh

這個可以run了^^
Dim sh As Worksheet
With Workbooks.Open(ThisWorkbook.Path & "\book2.xlsx")
For Each sh In .Sheets
   If sh.CodeName = "Sheet1" Then MyName1 = sh.Name
   If sh.CodeName = "Sheet2" Then MyName2 = sh.Name
   If sh.CodeName = "Sheet3" Then MyName3 = sh.Name
   
Next
End With




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)