2013-03-19 4 views
1

Excel 스프레드 시트에있는 기준에 따라 이름을 바꾸려고하는 PDF 파일이 많습니다. 스프레드 시트에는 ID, 성, 이름이 나열됩니다.vbscript를 사용하여 ADO 레코드 세트를 변수로 설정

| 123456 | Smith | Joe | 

나는 열고 고급 엑셀에서 읽고 ADO 연결을 만들 수 있습니다 내 쿼리에 대한 응답을 얻을 수 있지만, 파일 이름을 포함하는 레코드의 참여와 변수로 저장하는 방법을 찾을 수 있습니다 .

내가 사용하고 코드 : (현재의 코드 세트로 업데이트)

'On Error Resume Next 

LetterDirectory = InputBox("What letter are we scanning?") 

DirectoryLocation = "C:\CLNotes\" 
LetterDirectory = UCase(LetterDirectory) 
SubDirectory = DirectoryLocation & LetterDirectory 
FullDirectory = DirectoryLocation & LetterDirectory & "\*.pdf" 

'Creating Excel objects 
Set xl = CreateObject("Excel.Application") 
Set xlBook = xl.Workbooks.Open("c:\CLnotes\dbo_Patient.xlsx") 
Set xlSheet = xlBook.Worksheets(LetterDirectory) 
xl.Visible = True 

'Set Variables 
xlRow = 1 
totalRows = xl.WorksheetFunction.CountA(xlSheet.Range("A:A")) 
oldFilename = 0 

For xlRow = 1 to totalRows 

LastName = xlSheet.Cells.Item(xlRow, 2).text 
FirstName = xlSheet.Cells.Item(xlRow, 3).text 
FullName = LastName & " " & Firstname 
newFilename = xlSheet.Cells.Item(xlRow, 1).Text 
'FullName = "b lorraine" 

Set objConnection = CreateObject("ADODB.Connection") 
Set objRecordSet = CreateObject("ADODB.Recordset") 
objConnection.Open ("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';") 
objRecordSet.Open ("SELECT System.FileName FROM SYSTEMINDEX WHERE Contains('" & FullName & "')"), objConnection 
objRecordSet.MoveFirst 
oldFilename = objRecordset.Fields.Item("System.FileName") 
Do Until objRecordset.EOF 
    Wscript.Echo objRecordset.Fields.Item("System.FileName") 
    objRecordset.MoveNext 
Loop 
Next 

감사합니다.

답변

1

IF

Wscript.Echo objRecordset.Fields.Item("System.FileName") 

출력 (관심있는) AND '파일 이름을 포함하는 레코드의 일부'

Set oldFilename = objRecordset.Fields.Item("System.FileName") 

했던 바와 같이 그 값을] 저장 '로 시도 Set가 할당에 사용할 수 있기 때문에 THEN

oldFilename = objRecordset.Fields.Item("System.FileName") 

가 문제를 해결할 것 '변수 객체 만 (문자열과 같은 '일반'데이터 유형이 아님).

그 악의적 인 원인은 Set var = non-object입니다. - 내가 생각하기에 - EVIL 글로벌 On Error Resume Next의 사용으로 인해 숨겨졌습니다.

+0

나는 실제로 그것을 세트로 그리고 세트없이 시험해 보았지만, 나를 붙들고있는 주된 것은 악의적 인 에러 검사 때문에 보이지 않는 것이라고 생각한다. 나는 그 부분을 무력화 한 이후로 실제로 무슨 일이 일어나는지를 볼 수 있습니다. 실제로 objRecordset.Open 쿼리에서 멈추고 있습니다. "(null) (32, 1) : (null)"을 출력하고 있습니다. – fiercebeard