묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
vba와 html 호환문의....
2003.04.18 09:12
안녕하세요...
제가 회사내 제 컴퓨터를 winapm을 깔아서 서버화 한다음 사이트를 만들었습니다.
목적은 제 컴에 있는 엑셀파일을 검색해서 서버상에서 data를 만들어 공유할 목적입니다.
사이트를 만들어서 엑셀파일까지 띄우는건 성공을 했는데....
그 엑셀파일에 vba로 파일 검색기능을 달아놓았는데 그게 안먹히더군요...
그래서 고민끝에 생각한것이 웹 검색기능을 엑셀vba에 접목이 가능한건지 문의 드리려고 들올립니다.
아래 소스는 엑셀에서 xls파일을 검색하는 vba소스입니다.
여기보면 dir_name="c:/usr/www/성적서/report/" 라고 있는데 여기 주소를
웹서버 주소인 http://150.1.162.156/성적서/report/ 라고 해도 안되더군요...
이것만 가능하게되면 마무리가 되는데 지금 여기서 꽉! 막혀 있습니다.
부디 조언 좀 부탁 드립니다.
아래 경로로하면 제 컴에서는 파일찾기가 되는데 다름 컴에선 에러 발생합니다.
다른 컴에서 찾기를 클릭할땐 제 서버로 연결이 안되는것 같습니다.
엑셀에서는 안되는건가요?
이게안되면 여태까지 헛수고한게 되는데...
좋은 방법 있으면 꼭! 좀 알려주세요...
Sub data찾기_Click()
Dim array_file(1 To 100) As String
ListBox1.Clear
'DATA 파일 경로
dir_Name = "C:/USR/WWW/성적서/REPORT/"
f1 = dir_Name
If Right(f1, 1) = "/" Then
f1 = Left(f1, Len(f1) - 1)
End If
ChDrive f1
ChDir f1
fi = 0
FRNAME = Dir("*.xls")
While (FRNAME > " ")
fi = fi + 1
array_file(fi) = Left(FRNAME, Len(FRNAME) - 4)
FRNAME = Dir()
Wend
For i = 1 To fi
For j = i + 1 To fi
If array_file(i) < array_file(j) Then
temp = array_file(j)
array_file(j) = array_file(i)
array_file(i) = temp
End If
Next j
Next i
If fi > 0 Then
For i = 1 To fi
ListBox1.AddItem Trim(array_file(i))
Next i
ListBox1.ListIndex = 0
ListBox1.Selected(0) = True
End If
Exit Sub
End Sub
제가 회사내 제 컴퓨터를 winapm을 깔아서 서버화 한다음 사이트를 만들었습니다.
목적은 제 컴에 있는 엑셀파일을 검색해서 서버상에서 data를 만들어 공유할 목적입니다.
사이트를 만들어서 엑셀파일까지 띄우는건 성공을 했는데....
그 엑셀파일에 vba로 파일 검색기능을 달아놓았는데 그게 안먹히더군요...
그래서 고민끝에 생각한것이 웹 검색기능을 엑셀vba에 접목이 가능한건지 문의 드리려고 들올립니다.
아래 소스는 엑셀에서 xls파일을 검색하는 vba소스입니다.
여기보면 dir_name="c:/usr/www/성적서/report/" 라고 있는데 여기 주소를
웹서버 주소인 http://150.1.162.156/성적서/report/ 라고 해도 안되더군요...
이것만 가능하게되면 마무리가 되는데 지금 여기서 꽉! 막혀 있습니다.
부디 조언 좀 부탁 드립니다.
아래 경로로하면 제 컴에서는 파일찾기가 되는데 다름 컴에선 에러 발생합니다.
다른 컴에서 찾기를 클릭할땐 제 서버로 연결이 안되는것 같습니다.
엑셀에서는 안되는건가요?
이게안되면 여태까지 헛수고한게 되는데...
좋은 방법 있으면 꼭! 좀 알려주세요...
Sub data찾기_Click()
Dim array_file(1 To 100) As String
ListBox1.Clear
'DATA 파일 경로
dir_Name = "C:/USR/WWW/성적서/REPORT/"
f1 = dir_Name
If Right(f1, 1) = "/" Then
f1 = Left(f1, Len(f1) - 1)
End If
ChDrive f1
ChDir f1
fi = 0
FRNAME = Dir("*.xls")
While (FRNAME > " ")
fi = fi + 1
array_file(fi) = Left(FRNAME, Len(FRNAME) - 4)
FRNAME = Dir()
Wend
For i = 1 To fi
For j = i + 1 To fi
If array_file(i) < array_file(j) Then
temp = array_file(j)
array_file(j) = array_file(i)
array_file(i) = temp
End If
Next j
Next i
If fi > 0 Then
For i = 1 To fi
ListBox1.AddItem Trim(array_file(i))
Next i
ListBox1.ListIndex = 0
ListBox1.Selected(0) = True
End If
Exit Sub
End Sub
그런 경우엔 호찬님의 pc 의 엑셀이 아닌 클라이언트의 pc에 있는 엑셀을 띄운것과 동일한 상태가 됩니다 단순히 웹에서는 해당 컴포넌트를 호출만 한것이죠.
그리고 "C:/USR/WWW/성적서/REPORT/" 라는 폴더를 지정해줘 봐야 결국 호찬님 pc가 아닌 클라이언트 pc 를 검색하는거죠. 여기서 빠르게 풀수 있는 꽁수라면 호찬님 PC 에 해당 폴더를 공유를 걸어서 모든 pc에 열어 주고 폴더명을 "\\호찬님PC네트웍네임 or ip\report\" 이런식으로 접근하게끔하는것도 방법이죠 대신 네트웍 네임의 경우는 라인내에서만(회사내) 가능하고 ip의 경우엔 외부에서도 가능합니다. 단, 위와 같이 할경우엔 모든 pc에 해당 폴더의 공유를 열어줘야 되서 보안에 문제와 각 유저 등록이 복잡해 지죠.
또 다른 방법으로 vb 검색기능을 이용해 activex DLL 파일을 생성후 웹페이지에서 createObject 를 이용해 함수를 호출하여 서버 데이터를 검색후 링크 시켜 주는것 까지는 가능하겠지만 웹프로그램에 대한 많은 지식이 필요로 하기 때문에 --a 이건 어려울것 같네요 그럼 수고..