VBA-在工作簿不開啟的前提下,如何直接輸入資料到該檔案內?(內文詳述)

程序碼如下:
Public Sub 不開啟工作簿寫入資料()
   '官網:ChDir 陳述式會變更預設目錄或資料夾,但不會變更預設磁碟機。
   '陳述式 ChDrive 會變更預設磁碟機。
   ChDrive "D"                     '此為後加入
   ChDir "D:\VBA\測試夾\"    '此為後加入
   '原書中範例碼
   Workbooks("容器更新測試123.xlsx").Worksheets("工作表1").Range("A1") = "不開工作簿的測試"
End Sub
 
編譯後出現如下:
VBA-在工作簿不開啟的前提下,如何直接輸入資料到該檔案內?(內文詳述)

問題1?請問這是何意?如何解決呢?

'-------------------------------------------------------------
'將工作簿開啟再輸入用
Public Sub 開啟工作簿後再輸入()
    Workbooks("容器更新測試123.xlsx").Activate
    Worksheets(1).Select
    [a1] = "開啟工作簿後輸入測試"
End Sub
 
第二巨集執行編譯結果:
VBA-在工作簿不開啟的前提下,如何直接輸入資料到該檔案內?(內文詳述)
偵錯顯示出在啟用那列
VBA-在工作簿不開啟的前提下,如何直接輸入資料到該檔案內?(內文詳述)
 
(註:縱始我將第一巨集內的
   ChDrive "D"                     '此為後加入
   ChDir "D:\VBA\測試夾\"    '此為後加入
 這二列加入到第二巨集內,同樣會錯在這列上)

問題2:換言之這路徑設定好像並不需要,恩?是這樣嗎?謝謝

'--------------------------------------------------------------
 
但若我將工作簿 "容器更新測試123.xlsx"  檔案先開啟後
則巨集一、巨集二都可順利將A1之值填入..
只是這樣一來根本就無法解決我的問題了= ="
(註2:在巨集的信任位置處我也將該兩檔案的存放位置已設定為信任位置(且包含內部的子資料夾)
因巨集一的來源取自於書本,故應該是可行的..唯超出範圍的意思實在不解
恩~~請達人幫幫忙..解個疑惑...正在努力google中.....
======================
剛剛看了下,不同的模組其設定引用的項目並不一樣,我原先以為只有設定好了後,所有的工作簿,其引用的地方都會統一..
只是猜想會不會是這裡我要勾選什麼才能解決那個執行階段錯誤9'
陣列索引超出範圍的詭異雜症呢?
或是說,問題不在引用上?
對了,我這兩個檔,一個是以.xlsm存放(當使用檔)
另一個檔名為 "容器更新測試123.xlsx"  (則是用來當目的檔)
兩檔皆存放在同一目錄下..
以上感謝
2020-12-26 0:48 發佈
MaverickRay wrote:
程序碼如下:Public...(恕刪)


自問自答的回覆
我剛自己找了很久。大部份都是要用
.open
.activate
的做法後,然後再依序讓程式碼自動輸入相關文字
實測OK,唯獨這樣一來好像跟書中的案例分享觀念不太相同
不過open.save.close.
後感覺速度是比原先等檔案開啟,再按快捷鍵等去執行程序會快得多

只不過我還是想搞清楚究竟有沒有可能,在不開始予輸入的標的檔的前提下,
讓資料能順利丟入的做法
以上..謝謝各位
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?