問題情景
有多張數(shù)據(jù)庫表履肃,但是每張表存在一個(gè)excel里,導(dǎo)致文件量很大扣蜻。為方便使用逆巍,需要把多個(gè)excel合并為一個(gè),且每張表為一個(gè)sheet莽使,sheet名字以原來的文件名命名锐极。
解決辦法
1.Java有Apache POI包可以對(duì)excel操作,還沒搞清楚芳肌,以后貼代碼灵再。
2.使用excel自帶的VB編程。在excel里右鍵點(diǎn)sheet可以看見“查看代碼”的選項(xiàng)即可打開編程界面亿笤,復(fù)制如下代碼進(jìn)去點(diǎn)運(yùn)行即可翎迁。
注意事項(xiàng)
1.sheet要求至多31個(gè)字符,所以要注意表名長(zhǎng)度净薛,長(zhǎng)度超出會(huì)報(bào)錯(cuò)汪榔。
2.注意excel版本,有xls和xlsx倆種格式的文件肃拜。
Sub Books2Sheets()
'定義對(duì)話框變量
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'新建一個(gè)工作簿
Dim newwb As Workbook
Set newwb = Workbooks.Add
With fd
If .Show = -1 Then
'定義單個(gè)文件變量
Dim vrtSelectedItem As Variant
'定義循環(huán)變量
Dim i As Integer
i = 1
'開始文件檢索
For Each vrtSelectedItem In .SelectedItems
'打開被合并工作簿
Dim tempwb As Workbook
Set tempwb = Workbooks.Open(vrtSelectedItem)
'復(fù)制工作表
tempwb.Worksheets(1).Copy Before:=newwb.Worksheets(i)
'把新工作簿的工作表名字改成被復(fù)制工作簿文件名痴腌,這兒應(yīng)用于xls文件雌团,即Excel97-2003的文件,如果是Excel2007士聪,需要改成xlsx
newwb.Worksheets(i).Name = VBA.Replace(tempwb.Name, ".xls", "")
'關(guān)閉被合并工作簿
tempwb.Close SaveChanges:=False
i = i + 1
Next vrtSelectedItem
End If
End With
Set fd = Nothing
End Sub