返回列表 上一主題 發帖

[發問] 如何複製表格到別的工作表

  1. Private Sub CommandButton1_Click()
  2. fs = Application.GetOpenFilename("Excel Files (*.xls), *.xls") '開啟目的檔案
  3. With Workbooks.Open(fs)
  4.   Columns("B:D").Copy .Sheets("資料確認").[B1] '複製資料
  5. End With

  6. End Sub
複製代碼
回復 1# brabus
學海無涯_不恥下問

TOP

本帖最後由 Hsieh 於 2011-12-1 14:55 編輯

回復 3# brabus


    fs = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
這是開啟舊檔的對話方塊,可供使用者選擇要貼上資料的檔案
.Sheets("資料確認").[B1]
就是被開啟的檔案中資料確認工作表的B1儲存格,也就是被貼上資料的位置
至於2個*.xls請參閱GetOpenFilename的FileFilter 引數說明
FileFilter     選擇性的 Variant。是指定檔案篩選規則的字串。
此字串由一檔案篩選字串與 MS-DOS 萬用字元表達的檔案篩選規則描述組成,中間以逗點分隔。[檔案類型] 下拉式清單方塊中會列出各組字串。例如,下列字串指定兩個檔案篩選,文字和增益集:文字檔 (*.txt),*.txt,增益集檔案 (*.xla),*.xla。
若要使用多個 MS-DOS 萬用字元運算式組成單一檔案篩選類型,各萬用字元之間需以分號分隔;例如,"Visual Basic Files (*.bas; *.txt),*.bas;*.txt"。
如果省略,則此引數將預設為 "All Files (*.*),*.*"。
學海無涯_不恥下問

TOP

回復 6# brabus
把按鈕搬到空白工作表2
那這個空白工作表2是否與要複製的來源工作表在同一個檔案呢?
就是Sheets("sheet1")是否存在?
學海無涯_不恥下問

TOP

回復 8# brabus
"陣列索引超出範圍"
的原因應該是因為工作表不存在
你檢查檔案看看你的工作表名稱是否正確
學海無涯_不恥下問

TOP

回復 10# brabus
  1. Private Sub CommandButton1_Click()

  2. fs = Application.GetOpenFilename("Excel Files (*.xls), *.xls") '開啟目的檔案
  3. With Workbooks.Open(fs)
  4.   ThisWorkbook.Sheets("工作表1").Columns("B:D").Copy .Sheets("資料確認").[B1] '複製資料
  5.   ThisWorkbook.Sheets("工作表1").Range("h21:j60").Copy .Sheets("資料確認").[h21]
  6. End With
  7. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 12# brabus

因為你的按鈕做在別的工作表
所以若不指定檔案
會造成指定目前開啟的檔案
所以指明thisworkbook就能抓到巨集所在的檔案
學海無涯_不恥下問

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題