我試圖通過從Word文檔,其中每一行是一個獨特的樣品名稱的文本行迭代(如樣本1,從含有在其文件名中的樣品名稱的特定文件夾樣品2,樣本3),然後插入圖像(例如的Sample1 a.png,的Sample1 b.png,樣品2 xyz.png,Sample3 xxx.png)。代碼的
例子中,我使用:
Dim fso As New FileSystemObject
Set MySource = fso.GetFolder("C:\Test\")
numParas = ActiveDocument.Paragraphs.Count
counter = 0
While counter < numParas
counter = counter + 1
sampleName = ActiveDocument.Paragraphs(counter).Range.Text
For Each File In MySource.Files
If InStr(File.Name, sampleName) > 0 Then
' Insert script here to insert pictures
MsgBox ("File found")
End If
Next File
Wend
問題/問題:
我不能讓
InStr
在工作的時候comapre File.Name與sampleName (一個Range.Text對象)。但是,如果我使用
If InStr(File.Name, "Sample1") > 0 Then
而不是If InStr(File.Name, sampleName) > 0 Then
,它會工作;儘管這不允許我遍歷許多示例名稱。
從一個文件夾中的文件添加其他選項:
這個線程(Loop through files in a folder using VBA?)顯示了通過文件的文件夾中循環的更快方式。我試着用Dir
用下面的代碼:
Dim StrFile As String
Dim FolderStr As String
numParas = ActiveDocument.Paragraphs.Count
counter = 0
While counter < numParas
counter = counter + 1
sampleName = ActiveDocument.Paragraphs(counter).Range.Text
FolderStr = "C:\Test\*" + sampleName + "*.png"
MsgBox (FolderStr) 'First message box
StrFile = Dir("C:\Test\*" + sampleName + "*.png")
Do While Len(StrFile) > 0
' Insert script here to insert pictures
MsgBox ("File found")
StrFile = Dir
Loop
Wend
問題/問題:
- 我有麻煩創建迪爾對象反覆,因爲我不能用繩子串連的
sampleName
文本對象。
例如,在上面腳本的第一個消息框中,我得到以下輸出,文件地址位於兩個單獨的行而不是一個字符串。
C:\Test\*Sample1
*.png
感謝您的任何幫助,您可以提供!