2013-03-01 2 views
4

데이터를 절차 적으로 생성 된 엑셀 템플릿으로 내보내고 더 복잡한 계산/시각화를 위해 데이터를 내보내는 Access 데이터베이스가 있습니다. 가장 중요한 것은 사용자가 더 많은 데이터를 가지고 놀 수 있다는 것입니다.Access VBA에서 Solver32.dll을 참조합니다.

이 템플릿이 수행해야하는 기본적인 작업 중 하나는 해석 루틴을 실행하는 것입니다. 솔버는 (내가 아는) 액세스의 표준 참조 라이브러리에 존재하지 않습니다. 나는 사물의이 측면에 조금 새로운지만, 그물 주위를 보니 Solver32.dll이 어디에 있는지 알았고, 나는 그것에 대한 참고서를 지적했다. 좀 더 주변을 살펴보면 system32 디렉토리에 없기 때문에 regsvr32에 등록해야 할 수도 있음을 알았습니다. 시도했지만 작동하지 않았습니다.

이것은 관리자 수준의 액세스 문제로 인해 발생할 수 있습니다. (업무용 컴퓨터는 한숨입니다.) 분류 된 항목을 얻으려고하고 있지만 해결 방법이 없습니다. 어쨌든

는 시간을 질문 :

1) 난 그냥 Solver32.dll를 등록 관리자 권한이 필요하십니까 다음 내 참조 일 것 쉽게?

2) 그렇지 않은 경우, 다른 방법으로 해결 자 라이브러리를 참조 할 수 있습니까?

3) 그렇지 않은 경우 또는 solver32.dll을 등록 할 수있는 권한을 얻을 수없는 경우 (가능하면 IT 부서가 인색 할 수 있음), 사용하고있는 Excel 시트에 플러그 솔버 코드를 열 수있는 방법이 있습니까? 그냥저기서 달렸어?

........ 어쨌든

............

AddIns("Solver Add-In").Installed = True 

solveradd cellref:="$D$6", Relation:=1, FormulaText:="1" 

solveradd cellref:="$D$6", Relation:=3, FormulaText:="0" 

SolverOk SetCell:="$F$6", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$6:$D$6", _ 
     Engine:=1, EngineDesc:="GRG Nonlinear" 
SolverSolve 
이 검색되었다 : 코드가있는 경우 매우 간단하기 때문에 오늘의 큰 덩어리에 대한 해결책. MS가이 프로그램의 이름을 무한한 지혜로 선택하는 것을 돕지는 않습니다.이 프로그램은 실제로 인터넷 검색을 할 때 도움이됩니다.

편집 : 액세스 2010

오류 : 나는이 오류가 액세스 VBA의 IDE에서 DLL을 참조 할 때 은 "참조를 추가 할 수 없습니다 코멘트

버전에서 몇 가지 질문에 대답 지정된 파일에 "

regsvre.exe를 실행하려고하면"이 모듈의 'C : \ ProgramFiles ............. \ Solver32.dll "오류가 발생합니다. 진입 점 DllRegisterServer를 찾을 수 없습니다. "C : \ ProgramFiles ......... \ Solver32.dll"이 유효한 DLL 또는 OCX 파일인지 확인한 다음 다시 시도하십시오. "

+0

'나는 그것을 시도했지만 효과가 없었다. '나는 이것이 어떤 종류의 오류 메시지를 준다고 가정하고 있는가? – enderland

+0

실행중인 버전의 액세스. – Hiten004

+0

dll의 파일 특성을 확인 했습니까? 어떤 버전의 솔버에 연결을 시도합니까? 내에서 참조를 설정하려고 했습니까? solver.dll을 파일 시스템의 다른 위치에 복사하려고 시도 했습니까? 지금까지 가지고있는 오류 메시지는 무엇입니까? – collapsar

답변

2

좋아,이 덕트 테이프 솔루션을 알아 냈습니다. 현재 위치에서 보안 설정에 따라 이것이 작동하거나 작동하지 않을 수 있습니다. 심지어 내 위치에서 이것이 얼마나 효과가 있을지 모르지만, 지금까지는이를 배포 할 때 어떤 일이 일어날 지 알고 있습니다.

기본적으로 내가 Access에서 기본적으로 일할 수있는 solver32.dll를 얻을 수 없기 때문에, 해결사 실행 (액세스)에서 Excel 통합 문서에 매크로를 주입하고있다. 여기에 코드

Private Sub InjectSolverMacro(ByRef xlbook As Excel.Workbook, ByRef xlapp As Excel.Application) 

Dim xlVBProj As VBProject 
Dim xlModule As VBIDE.VBComponent 
Dim sCode As String 

xlbook.Worksheets(1).Select 

AddIns("Solver Add-In").Installed = True 

Set xlVBProj = xlbook.VBProject 
xlVBProj.References.AddFromFile ("C:\Program Files\Microsoft Office\Office14\Library\SOLVER\Solver.XLAM") 

Set xlModule = xlbook.VBProject.VBComponents.Add(vbext_ct_StdModule) 

sCode = "Private sub SolverMacro()" & vbCr _ 
     & "SolverAdd CellRef:=""$D$6"", Relation:=1, FormulaText:=""1"" " & vbCr _ 
     & "SolverAdd CellRef:=""$D$6"", Relation:=3, FormulaText:=""0"" " & vbCr _ 
     & "SolverOk SetCell:=""$F$6"", MaxMinVal:=2, ValueOf:=0, ByChange:=""$B$6:$D$6"", Engine:=1, EngineDesc:=""GRG Nonlinear"" " & vbCr _ 
     & "SolverSolve" & vbCr _ 
     & "End Sub" 

xlModule.CodeModule.AddFromString (sCode) 


End Sub 

는 처음이다 나는 다시했다 여기에 Solver32.dll을 가리키고 있습니다. 이것은 작동하지 않았다. 그런 다음 누군가가 Solver.XLA를 지적해야한다고 말한 this thread을 보았습니다. 하나님은 그것이 왜 이렇게 비슷한 지 압니다. 그러나 그것은 효과적이다.

몇 가지 다른 메모. 이 작업을 수행하려면 Microsoft Visual Basic for Applications Extensibility 5.3 라이브러리를 Access에서 참조해야합니다. 그런 다음 Excel의 매크로 설정 (파일 -> 옵션 -> 트러스트 센터 -> 트러스트 센터 설정 -> 매크로 설정)으로 이동하여 "VBA 프로젝트 개체 모델에 대한 액세스 신뢰"를 선택해야합니다. 이렇게하면 코드를 삽입 할 수 있습니다. 이것은 또한 배포 할 때 잘 작동하지 않을 수도 있습니다. 우리 회사는 모든 사용자가이 안전을 사용하지 못하게하는 것에 대해 열정적이지 않을 것입니다.

하지만 작동합니다.

+0

롤, 내 상사가 보안 오버라이드로 인해 이것을 받아들이지 않을까 걱정했기 때문에. 오 잘. – user2125055

관련 문제