2009-05-28 5 views
5

VBA & Excel을 통해 생성되는 많은 보고서가 있습니다. 보고서의 일부분 만 실제 계산입니다. 대부분의 작업은 SQL 호출 및 셀의 형식 지정/기록입니다. 그 중 가장 긴 시간은 몇 시간이 걸리며, 대다수는 각각 20-30 분 정도 걸립니다.무료 VB6/VBA 프로파일 러 및 최상의 Excel 사례

VB6 데스크톱 응용 프로그램에서 사용하는 DLL에 VBA/Excel 코드가 연결됩니다. 모든 SQL 호출이 여기에 있습니다. 여기에 개선의 여지가 있다고 확신하지만,이 점이 저에게 우려되는 것은 아닙니다. 데스크톱 응용 프로그램은 상당히 끔찍합니다.

두 개의 VBA 함수가 많이 사용됩니다. 이러한 함수를 GetRange 및 SetupCell이라고하며 거의 항상 함께 나타납니다. GetRange 함수는 Excel.Range 개체의 래퍼입니다. 시트의 범위와 범위의 범위에 대해 4 개의 값이 필요합니다. 주요 용도는 편집 할 셀을 선택하는 것입니다. 그것을 optmising의 많은 기회가 될 것으로 보이지 않지만 그것이 최선의 방법입니까?

파트너가 SetupCell입니다. Excel.Range 개체, 텍스트 및 셀에 대한 12 개의 매개 변수 (글꼴, 테두리 등)를 사용합니다. 이 매개 변수의 대부분은 선택적인 부울이지만 다시 매우 낭비적인 것처럼 보입니다. 이들 중 일부는 사후 설정 될 수 있지만 일부는 셀에 포함 된 값에 따라 달라집니다.

이러한 기능에는 상당히 많은 코드가 포함되어 있습니다. 주로 진술과 작업을 통해 게시하는 것이 좋지 않을 수 있습니다. 더 나은 방법이 있나요 그리고 무엇이며 내가 시간의 대부분이 여기에 또는 DLL에 있는지 확인하는 데 사용할 수있는 무료 프로파일 러가 있습니다 :

가 나는 두 가지 질문을 가지고 추측?

답변

3

실제보고 솔루션 사용에 대해 생각해 보셨습니까? 백엔드 데이터베이스가 무엇입니까? MSSQL 2000 이상을 사용하는 경우 무료로 사용할 수있는 상당히 적절한보고 솔루션이 있습니다. SQL Server Reporting Services.

보고서가 대부분의 시간 포맷팅 셀을 소비하는 것처럼 들립니다. 이는 보고서가 너무 느리고 데스크톱 앱이 그렇지 않은 이유 일 수 있습니다.

또는 이전에 형식을 알고 상당히 정적 인 경우 시트를 미리 포맷하여 일부 작업을 줄일 수 있습니다.

나는 이것을 거기에 던질 것이다. 대부분의보고 솔루션은 조건부 서식 등을 허용하지만 Excel이 수행하는 것보다 성능이 훨씬 뛰어납니다.

+0

쉽지 않습니다. 보고서의 길이가 달라야하고 셀의 일부 (또는 셀 합계)에 따라 일부 셀을 색칠해야합니다. –

+0

SSRS는 여러분이 던져 놓은 거의 모든 것에 대처할 수 있습니다. 저는 두 번째 대답입니다. –

3

이것은 프로파일 러 권장 사항이 아니지만 화면을 업데이트하는 데 소요되는 Excel 매크로의 속도를 높이기 위해 제안되었습니다. 매크로가 실행되는 동안 화면 업데이트를 해제하여 우수한 결과를 얻었습니다. Application.ScreenUpdating = False로 설정하고 also using a number of other similar settings을 설정하십시오. 매크로가 끝나면 다시 켜야합니다. P

+0

이미이 작업을 수행하고 Application.Calculation을 manual (xlCalculationManual)로 설정했습니다. –

1

자유롭지 않지만 프로필로 만들 수 있습니다. 데모가 귀하의 요구에 적합 할 것으로 판단됩니다. http://www.aivosto.com/vbwatch.html

+0

일부 보고서의 경우 예. 다른 사람들에게는 그렇지 않습니다. 각 워크 시트에는 vba '파일'과 몇 가지 지원 '파일'이 있습니다. 100 개 이상의 클래스와 모듈을 가지고 있기 때문에 dll에서는 확실히 작동하지 않습니다. –

6

몇 시간 동안 보고서가 우스 웠습니다.

문제가 VBA 구매 "Professional Excel Development"(steven Bullen, Rob Bovey 외) : 여기에는 PerfMon이라는 무료 VBA 프로파일 러가 있습니다.

문제가 Excel 계산이 http://msdn.microsoft.com/en-us/library/aa730921.aspx?ppud=4

를 참조하지만 문제가 가지 세포로 셀 참조와 관련된 높은 오버 헤드 추측 할 경우 : 당신은 항상 한 번에 세포의 큰 덩어리로 작동합니다가.

+0

자신을위한 멋진 포주 :-) 문제는 계산과 관련이 없지만 우리는 계산을 거의하지 않습니다 (Excel 또는 기타). 프로파일 러는 db에 대한 호출로 인해 시스템이 종료되거나 느린 셀 단위 포맷으로 인해 시스템이 종료되는지 여부를 확인하는 데 도움이됩니다. 한 번에 큰 셀 블록으로 어떻게 작업 할 수 있습니까? –

+2

Stephen Bullen의 PerfMon을 사용하고 싶지 않은 경우 왜 고해상도 창 타이머를 사용하여 일부 시간 코드를 추가하지 않는 것이 좋습니까? 블록 하고있는 것들 : 기본적인 접근 방식은 변형 변수에 범위 할당하는 것입니다 : 희미한 vArr을 같은 변형 vArr = 범위 ("B4 : z456") 값 2 이 당신에게 2-D를 포함하는 변형을 줄 것이다. 배열 배열을 조작하고 배열을 조작하여Range ("B4 : z456") = vArr 과 비슷한 형식으로 셀을 보낼 때 비슷한 형식으로 셀 범위를 지정할 수 있습니다 (아마도 템플릿 시트의 copy/pasteespecial을 사용) 세포. 등 –

0

VBA 코드 (또는 시트에 쓰는 VB 코드)가 줄 단위로 처리되는 것처럼 들리지만, 시간이 오래 걸리고 디자인이 좋지 않습니다. 한 번에 변형으로 Excel에 작성하십시오. 데이터를 모두 가져온 후에 시트를 포맷하십시오. 감사합니다. 로스