返回列表 上一主題 發帖

[發問] 關於自動開啟指定位置檔案or超連結路徑的檔案

如何加入以下指令呢? 因我加進Dim wsTarget As Worksheet
底下 好像會造成按鈕行不對 所以沒辦法判斷~
或 ...
starry1314 發表於 2015-6-3 15:47
  1. Dim wsTarget As Worksheet
  2. '===== 加底下這些指令=====
  3. Dim sPath$

  4. sPath = ThisWorkbook.Path
  5. ChDrive sPath
  6. ChDir sPath
  7. '===== 加上面這些指令=====
  8.     With ActiveSheet
複製代碼

TOP

已加入 但會跳出 執行程需或呼叫錯誤
回復  luhpro
starry1314 發表於 2015-6-4 15:47

我提供的指令若發生錯誤,
原因大部分應該都是 "找不到路徑" 才對.

你的程式乍看之下看不出來錯誤在哪裡,
你試試按下 "偵錯" 按鈕,
看看是哪一行發生此錯誤.

TOP

回復  luhpro

這一段,麻煩看看囉~
lSourceRow = .Buttons(Application.Caller).TopLeftCell.Row   '被 ...
starry1314 發表於 2015-6-5 23:48

指令對象與呼叫方式都不正確喔 :
Caller 屬性
傳回關於呼叫 Visual Basic 的資訊 (詳細內容請參閱 [備註] 部份)。

expression.Caller(Index)
expression    必選。此運算式會傳回 Application 物件。

Index    選擇性的 Variant。陣列的索引。僅當本屬性傳回陣列時此引數才有用 (詳細內容請參閱 [備註] 部份)。

備註
本屬性將傳回關於呼叫 Visual Basic 的資訊,如下表所示。

呼叫者                                                                                                                 傳回值
在單一儲存格中輸入的自訂函數                                                                     代表該儲存格的 Range 物件
在儲存格範圍中作為陣列公式一部份的自訂函數                                         代表該儲存格範圍的 Range 物件
Auto_Open、Auto_Close、Auto_Activate 或 Auto_Deactivate 巨集  以文字模式傳回的文件名稱
由OnDoubleClick 或 OnEntry 屬性所設定的巨集                                      該巨集所套用的圖表物件辨識符號或儲存格參照 (若適用) 的名稱
[工具] 功能表中的 [巨集] 對話方塊,或上述之外的其他呼叫者                #REF! 錯誤值

TOP

本帖最後由 luhpro 於 2015-6-6 00:36 編輯
回復  luhpro
    這邊真的看不懂...因為原本程式是正常運作的
只是按鈕必須放在要複製的資料 同一行 ...
starry1314 發表於 2015-6-6 00:27

你不用這樣設計啊.

如果要區分的是按鈕:
只要設定一個全域變數,
接著在每一個按鈕的 Click 處理程序區塊內各別設定此變數不同的值,
就可以區分了.

如果要區分的是被選取的儲存格:
Selection(1).Address 可取得 $A$2 形式的儲存格位址
Selection(1).Row 取得其列號
Selection(1).Column 取得其欄號
用 (1) 是只取左上角那一個儲存格,
避開多選時儲存格目標太多的情形.

TOP

本帖最後由 luhpro 於 2015-6-7 09:28 編輯
回復  luhpro
...
另想請問一開始給我的
   sPath = ThisWorkbook.Path
ChDrive sPath
ChDir sPath
作用是? 因用監看式看不懂,嘗試把他拿掉還是正常運作
...
starry1314 發表於 2015-6-6 01:25

這是對你 1# 所提 :
要怎麼設定成指定路徑然後檔名,可以讀取儲存格的檔名做變數呢?
猜測你是要先設定好目前工作目錄,
把所有會用到的檔案都放在該目錄下,
就不用在開啟檔案時還要另外指定檔案所在的目錄,
只要給檔名就可以使用該檔案了.

另外,這一行應該是不對的啊:
Set wsTarget = Workbooks("客戶明細-客服專用.xlsm").Sheets(.cells("一月")
Cells() 的括弧中間只能是 列號,行號 而不能是字串,
且你該行的括號也沒有成對.

Paste 函數執行時應該可以不用先把標的工作簿Activate,
也不用把標的工作表及標的儲存格 Select,
直接以 With wsTarget 與 End With包住,
再於其中用 . 代換即可.
或是用 wsTarget.cells... 亦可.

因為不能確認你語法有錯誤的這一行 :
Set wsTarget = Workbooks("客戶明細-客服專用.xlsm").Sheets(.cells("一月")
標的是否為可變動的,
所以暫時不能對那些指令做優化.


回復  luhpro
    回復  luhpro
請問關於這是用按鈕做,那如果是使用圖案呢?
無法取得.Buttons屬 ...
starry1314 發表於 2015-6-6 17:38

針對圖案?
這個我也不會喔,抱歉.

TOP

本帖最後由 luhpro 於 2015-6-8 22:08 編輯
回復  luhpro
    另外,這一行應該是不對的啊:
Set wsTarget = Workbooks("客戶明細-客服專用.xlsm" ...
starry1314 發表於 2015-6-7 11:09

還是不對的啊.

首先,
你該行的括號也沒有成對,
這就已經先會發生語法錯誤而導致整個 Sub 應該都執行不下去了.

若要引用你 15# 所述的 Function,
那麼該行大約應該長成底下這樣 :
Set wsTarget = Workbooks("客戶明細-客服專用.xlsm").Sheets(GetMonthStr(inDate))
而不應該有 Cells 這個東東.

更遑論你那個 ("一月") 是已經釘死為 "一月" 的,
與 GetMonthStr 這個 Function 怎麼也不該牽在一起.

我剛剛再次查了一下 Excel 2003 中關於 Range 的說明, 確認它的敘述 :
Cells 屬性
可用 Cells(row, column) 傳回單個儲存格,其中 row 為列索引,column 為欄索引。

難道更新版的 Excel 中,
Cells 有其它新的語法嗎?

TOP

本帖最後由 luhpro 於 2015-6-9 01:13 編輯
回復  luhpro
    這就不了解了...因我當初貼的那段是可正常運作~
後來將表格統一在一個,就沒有使用 ...
starry1314 發表於 2015-6-8 22:57

那要看原檔案內容才能知道了.


另想請問inDate是?
starry1314 發表於 2015-6-8 22:57

請看 15 #
Function GetMonthStr(inDate As Date) As String
因為不能得知你呼叫 Function 時用的是什麼變數名稱,
自然直接套用 Function 上的變數名來說明.

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題