Board logo

標題: VBA 有關路徑的問題(算已解決) [打印本頁]

作者: icestormer    時間: 2012-4-1 21:20     標題: VBA 有關路徑的問題(算已解決)

本帖最後由 icestormer 於 2012-5-3 09:34 編輯

file_path_get = Application.GetOpenFilename("EXCE檔(*.XLS),*xls") <<<用左方的程式碼 開舊檔後 取得 完整路徑

C:\Users\user\Desktop\jEveAssets\測試用2.xls <<完整路徑/檔名 如左

但奇怪的是 我把它 存在P1後  存EXCEL >關掉> 重開..
Range("p1").Value = file_path_get '取得完整路徑

神奇的事發生了 他會自動變成
C:\Users\user\Documents\測試用1.xls   <<<不管我把檔案放在那一槽 在那一目錄下  都會被自動改路徑名稱(檔案名不會改) 請問怎會這樣呢?
主要是想弄一個手動選取舊檔並讀取它的完整路徑 再利用路徑做其它使用

另外 不知有沒有什麼方法可以在不開啓目標檔.XLS情況下 讀取到它的工作表(工作表只有一頁)?
目前是採用
傳入參數後>(讀取P1的值(完整路徑)>打開它>取得它的工作表名稱>再關掉後 >回傳工作表名稱
Sub get_sheets_name(sheet_name, close_name)
    file_path= Range("p1").Value
    Worksheets("分析表").Activate
    Workbooks.Open Filename:=file_path
    sheet_name = ActiveSheet.Name
    Workbooks(close_name).Close
End Sub





PS:我是用W7 及OFFICE2003
作者: GBKEE    時間: 2012-4-2 10:27

本帖最後由 GBKEE 於 2012-4-2 12:21 編輯

回復 1# icestormer
Application.GetOpenFilename 是沒有開啟檔案的,如有選取檔案會傳回這檔案的完整路徑名稱
試試看是這樣的嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim file_path_get As String, Wo As Workbook
  4.     file_path_get = Application.GetOpenFilename("EXCE檔(*.XLS),*xls")
  5.     Set Wo = Workbooks.Open(file_path_get)                               '設定變數為 開啟選取的檔案
  6.     WorkBooks("分析表").Sheets(1).[a1] = Wo.Sheets(1).Name   '取得第一個工作表名稱
  7.     Wo.Close 0                                                                                       '關閉 選取的檔案 不存檔
  8. End Sub
複製代碼

作者: icestormer    時間: 2012-4-2 11:17

本帖最後由 icestormer 於 2012-4-2 11:40 編輯

回復 2# GBKEE


   你好
執行下去後出現這個錯誤呢 如下圖(執行階段錯誤 9 ,陣列索引超出範圍
http://imgur.com/xc6Gz
是錯在這行 Worksheets("分析表").Sheets(1).[p1] = Wo.Sheets(1).Name   '取得第一個工作表名稱 我是把你的程式碼COPY後完整貼上去執行的 不知方法是否有錯?


另外
神奇的事發生了 他會自動變成
C:\Users\user\Documents\測試用1.xls   <<<不管我把檔案放在那一槽 在那一目錄下  都會被自動改路徑名稱(檔案名不會改) 請問怎會這樣呢?


暫時找到另一個方法處理 如果我寫入的路徑名稱是放在[A1]內 這時要另外寫一個 把[a1].copy 到[a2] 然後 巨集就採用[A2]的就可行了

因只要存檔後 [A1]的路徑名稱會被自動改變但 [A2]的郤不會.. 不知這到底是怎一回事..
作者: icestormer    時間: 2012-4-2 11:41

回復 4# GBKEE


   有 但一樣出現同一個問題
作者: GBKEE    時間: 2012-4-2 12:31

回復 4# icestormer
Worksheets("分析表").Sheets(1) 這語法錯誤      已更正 2# 的程式碼
神奇的事發生了    不管我把檔案放在那一槽 在那一目錄下
不是神奇的    是 GetOpenFilename 會傳回選取檔案的完整路徑名稱
[A1]=file_path    當然會自動改路徑名稱
  1. Sub Ex()
  2.     Dim file_path_get As String
  3.      file_path = Application.GetOpenFilename("EXCE檔(*.XLS),*xls")
  4.     MsgBox file_path
  5. End Sub
複製代碼

作者: icestormer    時間: 2012-4-2 12:45

回復 5# GBKEE


     我的意思是

是神奇的    是 GetOpenFilename 會傳回選取檔案的完整路徑名稱
我用 這個指令 取得一個檔案的完整路徑
[例如A1] 是C:\Users\user\Desktop\最近儲存檔\測試用12.xls 但只要我一存檔>關掉EXCEL>重開
就會變成C:\Users\user\Documents\測試用1.xls

不管我檔案是放在那裡 檔名為何 都會被自動改變 只有檔案名稱-測試用1.xls不變
作者: GBKEE    時間: 2012-4-2 13:22

回復 6# icestormer
傳上檔案看看
作者: icestormer    時間: 2012-4-2 16:17

回復 7# GBKEE


  感謝你花時間回復我

不知怎了 剛又重弄了一下 又可行了




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