返回列表 上一主題 發帖

[發問] 儲存格索引值

回復 5# PJChen

功力沒很好,請試試
資料夾設定為A,如要變動請自行修改(含儲存路徑)

Sub 測試()
Dim Wb As Workbook, Sh As Worksheet, x As Range, Source1 As String
    Source1 = Workbooks("Macro.xlsm").Worksheets("VBA").Range("B1").Value '要開啟的檔案名稱
    Workbooks.Open "c:\A\" & Source1 & ".xlsx" '開啟要寫入的檔案   
    Workbooks("Macro.xlsm").Activate   
    Set Wb = Workbooks(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B1").Value) '儲存格的值為檔案名稱
    Set Sh = Wb.Worksheets(Worksheets("VBA").Range("B2").Text)  '儲存格的值為工作表名稱,因為工作表名稱是數字,會被當成"數第N個工作表",還無法解決,以加1先暫用      
    Sh.Activate
    With Sh
    Set x = Sh.Range(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B5").Text) '指定寫入的儲存格為放在那個欄位
     x = Workbooks("Macro.xlsm").Worksheets("VBA").Range("B4").Text '寫人的值放在那個欄位
    End With
    Workbooks(Dir("C:\A\" & Source1 & ".xlsx")).Close True '關閉並儲存寫入的檔案
End Sub

TOP

回復 4# jcchiang

謝謝你,改為text真的就可以了!
剩下第4個問題還沒解決
可以的話,也請指導一下,謝謝                測試.rar (40.88 KB)

B6為指定資料夾名稱A
裡面有N個檔案
每個檔案的工作表都以數字命名,例:1…2…3…
程式寫在Macro.xlsm中,
我想指定的工作表名稱放在B2欄位
而要寫人的值放在B4欄位
指定寫入的儲存格為放在B2欄位
我把所要做的事都放在Macro.xlsm的工作表VBA中,
只要從這裡修改值,就可以幫我寫入資料
請問要如何寫這段VBA?可以讓它依序寫入指定的資料夾A?

TOP

回復 1# PJChen

Set Sh = Wb.Worksheets(Worksheets("VBA").Range("B2").Value) '儲存格的值為工作表名稱

改為
Set Sh = Wb.Worksheets(Worksheets("VBA").Range("B2").Text) '儲存格的值為工作表名稱

TOP

回復 1# PJChen

我也不是很了解檔案的關聯性
所以將sh改為字串,就可以指向所設定名稱的sheet

Sub 測試()
Dim Wb As Workbook, sh As String, x As Range
'   Set Wb = Workbooks(Workbooks("Macro.xlsm").Worksheets("VBA").Range("B1").Value) '儲存格的值為檔案名稱
    sh = Worksheets("VBA").Range("B2") '儲存格的值為工作表名稱
    Worksheets(sh).Activate
    With Worksheets(sh)
    Set x = .Range("B4")
    x = Worksheets("VBA").Range("B4").Value '指定1.sheet日期
    End With
End Sub

TOP

回復 1# PJChen


    請問妳的這支程序主要目的為何?
    是要將指定工作表依據日期來做命名嗎?

   看不懂妳的B2、B3及B4設定,故此詢問。

TOP

        靜思自在 : 盡多少本份,就得多少本事。
返回列表 上一主題