2013-01-15 47 views
0

你能給我個建議嗎?vbscript - 如何通過第一個數字逐個使用文件?

我工作的窗口和使用MS功率點,我想自動使用我的picure文件

它們被命名爲喜歡

1_MOD_82.1542.bmp 
2_MOD_102.8821.bmp 
3_MOD_152.3541.bmp 

等..我想用它代替打字

ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename:="F:\somedir\1_MOD_82.1542" 

所以我想有一些像循環(但是這個代碼是唯一的念頭,不工作)

for i:=0, i++,i<10 do 
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(Filename:="F:\somedir\%i*" 

我想打一個循環,這將通過起始號碼使用的圖像文件。

回答

0

添加一個內部循環:

Set fso = CreateObject("Scripting.FileSystemObject") 

For i = 0 To 9 
    For Each f In fso.GetFolder("F:\somedir").Files 
    If f.Type = "Bitmap-Image" Then 
     If CInt(Left(f.Name, 1)) = i Then 
     ActiveWindow.Selection.SlideRange.Shapes.AddPicture(f.Path) 
     End If 
    End If 
    Next 
Next 

檢查,以確保第一個字符是一個數字可以像下面這樣說:

If f.Type = "Bitmap-Image" Then 
    c = Left(f.Name, 1) 
    If IsNumeric(c) Then 
    If CInt(c) = i Then 
     '... 
    End If 
    End If 
End If 

另一個(更詳細),用於處理選項圖像將是他們列舉到分離recordset然後filter記錄。這樣你就不必在每個循環中枚舉images文件夾中的所有文件。

Set fso = CreateObject("Scripting.FileSystemObject") 
Set rs = CreateObject("ADOR.Recordset") 
rs.Fields.Append "Name", 200, 80 
rs.Fields.Append "Path", 200, 255 
rs.Open 

For Each f In fso.GetFolder("F:\somedir").Files 
    If f.Type = "Bitmap-Image" Then 
    rs.AddNew 
    rs("Name").Value = f.Name 
    rs("Path").Value = f.Path 
    rs.Update 
    End If 
Next 

For i = 0 To 9 
    rs.Filter = "Name LIKE '" & i & "%'" 
    rs.MoveFirst 
    Do Until rs.EOF 
    ActiveWindow.Selection.SlideRange.Shapes.AddPicture(rs("Path").Value) 
    rs.MoveNext 
    Loop 
Next 
+0

謝謝Wiechers先生,反正我想你的腳本,它給了我一個運行時錯誤13類型不匹配的行如果f.Type =「位圖圖像」,並CINT(左(f.Name,1) )=我的話..我想也只有CINT(左(f.Name,1))=然後我仍然錯誤13,它可以是什麼?謝謝! – Ondrej

+0

@Ondrej對不起,我的錯。我始終忘記,即使第一次檢查失敗,VBScript也會始終評估所有條件。由於該腳本試圖轉換所有文件名的第一個字符,即使它們不是位圖。如果您的文件夾包含名稱不是以數字開頭的位圖,則需要另一次檢查以驗證第一個字符是否實際爲數字。 –

+0

它現在正在工作,當只有「數字命名」的文件..謝謝很多! – Ondrej

相關問題