標題:
[分享]
(已解決)請問大大,如果EXCEL 2003轉換至2010,原程式要如何修正?
[打印本頁]
作者:
cmo140497
時間:
2012-2-15 18:55
標題:
(已解決)請問大大,如果EXCEL 2003轉換至2010,原程式要如何修正?
本帖最後由 cmo140497 於 2012-2-20 11:59 編輯
Dear 大大 :
目前小弟遇到一個問題,公司電腦轉換至office 2010後,原excel 2003 巨集,卻無法執行,尤其在插入圖片部份,該如何解決?另外還有哪些的差異,須注意的,實在感謝!
感謝大大的指導,但在picture.insert 的語法,在2010年版似乎引用上是否有所不同,感謝!
[attach]9609[/attach]
[attach]9607[/attach]
[attach]9606[/attach]
作者:
wang
時間:
2012-2-15 23:48
如果活頁簿包含您要保留的巨集,請按一下 [.xlsm]。
如果活頁簿包含您要保留的巨集,而您要將活頁簿儲存為巨集,請按一下 [.xltm]。
詳細請參考
http://office.microsoft.com/zh-tw/excel-help/HA010342994.aspx#BM4
將活頁簿轉換為 Excel 2010 檔案格式
作者:
cmo140497
時間:
2012-2-16 08:23
謝謝大大的指導,但在picture.insert的部份還是有問題,謝謝!
作者:
Hsieh
時間:
2012-2-16 14:47
回復
1#
cmo140497
[url]http://chijanzen.net/wp/?p=495
[/url]
作者:
cmo140497
時間:
2012-2-17 09:56
感謝版主的指導,但小弟不管怎麼試,這個程式似乎不為所動,謝謝!
作者:
hugh0620
時間:
2012-2-17 11:05
我有下載檔案在2003中執行~ 無任何反應~
樓主確定file一開始就是可以被執行的嘛???
作者:
Hsieh
時間:
2012-2-17 14:24
回復
5#
cmo140497
你的目的為何我不知道,但要新增圖片只要改成以下流程即可
Sub STARTGETSINF()
Dim Fs As Object, E, i As Integer, P, ii As Integer
Dim xlPath As String
Dim myWb As Workbook
Dim myFileName As String
Cells.Clear
ActiveWindow.Zoom = 75
Rows("2:9999").EntireRow.AutoFit
Columns("B:Y").ColumnWidth = 2
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = "D:\Export\SINF\"
.Show
If .SelectedItems.Count = 0 Then Exit Sub
xlPath = .SelectedItems(1)
End With
With CreateObject("Scripting.FileSystemObject").GetFolder(xlPath)
i = 1
For Each E In .SubFolders
If i > ActiveWorkbook.Sheets.Count Then
Sheets.Add(, Sheets(Sheets.Count)).Name = E.Name
Else
Sheets(i).Name = E.Name
End If
ii = 2
For Each P In E.Files
If InStr(UCase(P.Name), ".JPG") Then
ActiveWindow.Zoom = 75
With Sheets(i).Cells(ii, 2).Select '設定圖片欄位大小
With Selection
.RowHeight = 60
.ColumnWidth = 9.5
.WrapText = True
End With
t = Cells(ii, 2).Top + Cells(ii, 2).Height * 0.1 '圖片上位置
l = Cells(ii, 2).Left + Cells(ii, 2).Width * 0.1 '圖片左位置
w = 50 '圖片縮小50%寬度
h = 50 '圖片縮小50%高度
With Sheets(i).Shapes.AddPicture(P, True, True, l, t, w, h) 'B欄插入圖片
.Placement = xlMove '圖片大小隨儲存格位置而改變
With Sheets(i) 'A欄插入圖片名稱
'.Cells(ii, 1) = P.Name '圖片檔案名稱
.Cells(ii, 1) = P '圖片檔案完整路徑
End With
End With
End With
ii = ii + 1 '一次跳的欄位數
End If
Next
Next
End With
End Sub
複製代碼
作者:
cmo140497
時間:
2012-2-20 10:15
回復
7#
Hsieh
感謝版主的指正,其實這幾段程式也是先前請版主指正拼湊出來的,小弟不是很懂其中的意思,剛才的程式試run了一下,圖片一直重疊,debug後,發現sheet(i)沒有累加,現已經ok,2003年版的excel
picture,insert( ),無法延用至2010年版,小弟現在了解了,實在感謝!
Sub STARTGETSINF()
Dim Fs As Object, E, i As Integer, P, ii As Integer
Dim xlPath As String
Dim myWb As Workbook
Dim myFileName As String
Cells.Clear
ActiveWindow.Zoom = 75
Rows("2:9999").EntireRow.AutoFit
Columns("B:Y").ColumnWidth = 2
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
.InitialFileName = "D:\Export\SINF\"
.Show
If .SelectedItems.Count = 0 Then Exit Sub
xlPath = .SelectedItems(1)
End With
With CreateObject("Scripting.FileSystemObject").GetFolder(xlPath)
i = 1
For Each E In .SubFolders
If i > ActiveWorkbook.Sheets.Count Then
Sheets.Add(, Sheets(Sheets.Count)).Name = E.Name
Else
Sheets(i).Name = E.Name
End If
ii = 2
For Each P In E.Files
If InStr(UCase(P.Name), ".JPG") Then
ActiveWindow.Zoom = 75
With Sheets(i).Cells(ii, 2).Select '設定圖片欄位大小
With Selection
.RowHeight = 60
.ColumnWidth = 9.5
.WrapText = True
End With
t = Cells(ii, 2).Top + Cells(ii, 2).Height * 0.1 '圖片上位置
l = Cells(ii, 2).Left + Cells(ii, 2).Width * 0.1 '圖片左位置
w = 50 '圖片縮小50%寬度
h = 50 '圖片縮小50%高度
With Sheets(i).Shapes.AddPicture(P, True, True, l, t, w, h) 'B欄插入圖片
.Placement = xlMove '圖片大小隨儲存格位置而改變
With Sheets(i) 'A欄插入圖片名稱
'.Cells(ii, 1) = P.Name '圖片檔案名稱
.Cells(ii, 1) = P '圖片檔案完整路徑
End With
End With
End With
ii = ii + 1 '一次跳的欄位數
End If
Next
[b][color=Red]i = i + 1[/color][/b] Next
End With
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)