Board logo

標題: [發問] 此處需要一個物件 [打印本頁]

作者: PJChen    時間: 2019-9-6 21:57     標題: 此處需要一個物件

各位高手好:

1) 我的VBA是放在Macro.xlsm中,想設定一個t值,並且放在"Macro.xlsm"的Worksheets("VBA").Range("B31")中,
並且將t值代入這個路徑裡 Path = "D:\蘆竹共用\倉儲共用\1_理貨.庫存\網路訂單\" & "網路訂單_" & xi & "\" & "網路訂單_" & t & "\"
儲存格的值是一個日期的text,例如:20190906,它是資料夾命名的一部份,我常常會需要找幾天前的資料,可以直接在儲存格中修改就比較方便,
但在執行程式時,會出現對話框告知,此處需要一個物件,我猜想是否 Dim  t As String這個宣告錯誤??還是有其它問題?

以下是程式的一部份:
  1. Sub EX()
  2. Dim mFile As String, xmFile As String, rFile As String, 目的檔 As Workbook, 來源檔 As Workbook, m來源檔 As Workbook, PO來源 As Workbook, xPO來源 As Workbook, i As String, xi As String, t As String

  3. Application.Calculation = xlManual     '手動計算
  4. Application.ScreenUpdating = False
  5. xi = Format(Date, "YYYY.MM")  '日期年月設定作為工作表的變數
  6. Set t = Workbooks(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B31").Value) 't變數指定儲存格為檔案名
  7. '**********************目的檔資料夾 統昶驗收(有公式)
  8.     Path = "D:\0_自訂表單\D統昶驗收\"                '目的檔
  9.     xmFile = Dir(Path & "*統昶驗收*.XLSX")            '來源檔名
  10.         Do While xmFile <> ""
  11.             Application.DisplayAlerts = False       '一般提警示訊息關閉
  12.             Workbooks.Open filename:=Path & xmFile
  13.         
  14.     Set 目的檔 = Workbooks(Dir(Path & "*統昶驗收*.XLSX"))
  15. '**********************目的檔 清除之前貼上的資料....
  16.       目的檔.Activate
  17.         Range("訂單.比菲多統昶").ClearContents
  18.         Range("比菲多驗收").ClearContents
  19.         xmFile = Dir
  20.     Loop
  21. '**********************開啟訂單資料
  22. Path = "D:\蘆竹共用\倉儲共用\1_理貨.庫存\網路訂單\" & "網路訂單_" & xi & "\" & "網路訂單_" & t & "\"     '訂單資料夾
  23.     mFile = Dir(Path & "*統昶*" & ".XLS")     '來源檔
  24.         Do While mFile <> ""
  25.             Application.DisplayAlerts = False       '一般提警示訊息關閉
  26.             Workbooks.Open filename:=Path & mFile
複製代碼
2) 我有個bat檔用來自動備份檔案,我想把紅色字改為可以自動帶出當年及當月,當年度及月份改變時,就不用手動修改,請問這個變數要怎麼在bat中修改?
a) 108年(台灣年度)及西元年(2019年)的寫法
b) 自動依月份的變數寫法,例:9月、12月.....

@echo off
set hour=%time: =0%
set File=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
echo %File%
xcopy "D:\蘆竹共用\倉儲共用\1_理貨.庫存\比菲多\108年比菲多\蘆竹所過允收回廠單\*9月.xlsx" "D:\0_自訂表單\Backup\倉儲共用%File%\比菲多\" /D /Y
作者: 准提部林    時間: 2019-9-11 10:11

t As String  
Set t = Workbooks(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B31").Value) 't變數指定儲存格為檔案名

t是文字型態, 用set當然不行
作者: PJChen    時間: 2019-10-5 15:18

回復 2# 准提部林

感謝大大提示,

換個方式,...終於解決問題了!

t = Workbooks("Macro.xlsm").Worksheets("VBA").Range("B31").Value

不過關於bat的變數,找了好多資料,大多是把年月日改為20190912 (例句),月份都會帶出2碼,有人知道要怎麼改為月份及台灣年嗎?
就是1~9月是單一數字時,前面不補0的寫法?
2019年改108年

@echo off
set hour=%time: =0%
set File=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
echo %File%
xcopy "D:\蘆竹共用\倉儲共用\1_理貨.庫存\比菲多\108年比菲多\蘆竹所過允收回廠單\*9月.xlsx" "D:\0_自訂表單\Backup\倉儲共用%File%\比菲多\" /D /Y




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