我遇到了NameSpace CopyHere功能的麻烦。我正在尝试创建一个包含一堆日志的zip文件。我可以很好地创建zip文件,但是当使用NameSpace.CopyHere时,如果我使用字符串或包含字符串的变体,它将不会将文件写入zip存档。
例如,我有一个位于P:\ test2.txt的文件。
如果我使用这些行:
objApp.Namespace(sZipArchive).CopyHere sFile
objApp.Namespace(sZipArchive).CopyHere vLogs(i)
其中sFile = vLogs(i)=“P:\ test2.txt
文件test2.txt不会被复制到zip存档中。
但是,如果我使用这一行:
objApp.Namespace(sZipArchive).CopyHere "P:\test2.txt"
然后,该文件被复制到zip文件中。
如果我检查sFile或vLog(i)是否=“P:\ test2.txt”,我可以看到它们是相同的。
我在这里缺少的是为什么前两行不起作用,但第三行不起作用?
感谢您的时间。
完整子:
Private Sub BtnSaveToZip_Click()
Dim bEndRow, bTest As Boolean
Dim iRow, iCount As Integer
Dim sZipArchive, sDate, sFolderExists, sFile As String
Dim vLogs, vFilename As Variant
Dim objApp As Object
sDate = Date
sDate = Replace(sDate, "/", "") ' set date format to DDMMYYYY instead of DD/MM/YYYY
sZipArchive = LblLogArchive + "\" + sDate
sFolderExists = Dir(sZipArchive)
If sFolderExists = "" Then
CreateDir (sZipArchive) ' if the subfolder with the date does not exists, create it
End If
sZipArchive = sZipArchive + "\" + wsContacts.Range("B7").Value + " Logs_" + sDate + ".zip"
'Check if file is open
If FileLocked(sZipArchive) Then
MsgBox sZipArchive + " already open. Please close the archive."
Exit Sub
End If
'Creating the zip file from Ron de Bruin
NewZip (sZipArchive)
'filling the zip file
Set objApp = CreateObject("Shell.Application")
bEndRow = False
iRow = gFirstData
Do While bEndRow = False
If Not IsEmpty(wsLogs.Cells(iRow, gTestCase).Value) Then
If Not IsEmpty(wsLogs.Cells(iRow, gLog).Value) Then
vLogs = Split(wsLogs.Cells(iRow, gLog).Value, ";")
For i = 0 To UBound(vLogs) - 1
sFile = vLogs(i) ' Debug only
If sFile = "P:\test2.txt" Then 'Debug only
objApp.Namespace(sZipArchive).CopyHere vLogs(i) ' if I put "P:\test2.txt", it works correctly
'Keep script waiting 5s for debug purpose
Application.Wait (Now + TimeValue("00:00:05"))
End If
Next
End If
iRow = iRow + 1
Else
bEndRow = True
End If
Loop
MsgBox "Zip successfully created"
Set objApp = Nothing
End Sub
答案 0 :(得分:1)
如果有效
import nltk
lancaster = nltk.LancasterStemmer()
print lancaster.stem("recruitment")
print lancaster.stem("recruiter")
print lancaster.stem("recruited")
且objApp.Namespace(sZipArchive).CopyHere "P:\test2.txt"
和sFile
似乎与vLogs(i)
相同,我相信它可能是一个领先或尾随空间的问题。试试这个
P:\test2.txt
或
objApp.Namespace(sZipArchive).CopyHere Trim(sFile)
检查objApp.Namespace(sZipArchive).CopyHere Trim(vLogs(i))
和sFile
是否包含有效路径的另一种方法是使用vLogs(i)
另一种调试方法是逐步执行代码,然后在立即窗口中输入
DIR
在这两种情况下你应该得到一个真实的。如果你没有,那就有你的问题:)