我试图通过从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
感谢您的任何帮助,您可以提供!