2017-10-25 6 views
1

Excel 2007에서 실행되는 Excel 매크로가 있고 스프레드 시트에서 데이터를 자동으로 가져올 수 있도록 메인 프레임 응용 프로그램이 열립니다. 이것은 잘 작동하고있다AppActivate는 Excel 2007에서 작동하지만 2010에서 작동하지 않습니다.

그러나 그것은 ID를 사용하는 쉘 명령을 사용하여 내가 시도 엑셀 2010

에서 작동하지 않고 다른 응용 프로그램 기반 메인 프레임 애플리케이션과 비 창입니다. 그러나

,

에서는 AppActivate 나는 런타임 오류 5 받고 있습니다 Excel에서 엑셀 2007에서 2010

을 잘 작동했다 (메인 프레임 응용 프로그램을 엽니 다) "제목"- 잘못된 프로 시저 호출 또는 인수가 .

저는이 문제를 2 일 동안 풀려고 노력해 왔으며 2007 버전에서는 모두 잘 작동합니다.

도움이 될 것입니다.

는이 라인을주고있다 메인 프레임 응용 프로그램

에서는 AppActivate (프로그램 응용) => 내 엑셀 스프레드 시트에 저장된 이름 문자열

프로그램 응용 = 범위 ("프로그램 응용"). 값 '으로

희미한 APPNAME

Dim Myself as string 
Myself = activewindow.caption 

다음에서는 AppActivate는 (나 자신은) 초점 바 걸릴 것 : 런타임 오류 '5'잘못된 프로 시저 호출 또는 인수

+0

코드 시도를 공유하고,이 오류를 받고있는 라인에 우리를 가리 킵니다하시기 바랍니다. –

+0

문자열로 어둡게 appName을 appName = 범위 ("AppName").이 값은 메인 프레임 응용 프로그램에 대한 Excel 스프레드 시트에 저장된 이름입니다. AppActivate (appName) =>이 줄은 런타임 오류 '5' 호출 또는 인수 – RShome

+0

주석에 코드를 삽입하는 대신, [읽기 쉽게 원래의 질문을 편집] (https://stackoverflow.com/posts/46932069/edit) 할 수 있습니다. –

답변

0

답변을 주셔서 감사합니다. 사용자가 원격 위치에서 Excel 2016 버전을 시작한다는 사실을 알았 기 때문에 열려고하는 응용 프로그램을 찾을 수 없었습니다. 이전 버전의 Excel이 데스크톱에서 시작되어 제대로 작동했습니다.

요약하면 AppActivate 함수는 Excel 버전 모두에서 잘 작동합니다.

감사합니다.

감사

0

나는 희망이 도움이 코드를 발견 원본 스프레드 시트로

그러나 "업그레이드"가 끝나면 AppActivate 줄에서 오류가 발생하기 시작했으며 Windows 작업 표시 줄의 제목이 "Microsoft Excel"이라는 단일 스프레드 시트 만있는 경우 마침내 알 수있었습니다.

난 후,

Myself = "Microsoft Excel - " & activewindow.caption 

https://www.mrexcel.com/forum/excel-questions/566273-appactivate-excel-2010-a.html

+0

고마워, 미안, 아마 나 자신을 분명히하지 않았다. 내 Excel 스프레드 시트에서 입력을 받아 들일 수 있도록 실제로는 메인 프레임 응용 프로그램을 열어야합니다. – RShome

0

당신이 당신의 VBC 코드가 자리하고있는 곳 엑셀에 다시 초점을 반환 할 경우에 변경하여 일명 ThisWorkbook 객체를 임시 수정했다 다음 줄을 사용할 수 있습니다.

AppActivate Title:=ThisWorkbook.Application.Caption 
0

이 오류는 AppActivate가 정확한 제목을 얻지 못할 때 발생합니다. 아래 코드를 시도해보고 도움이되는지 확인하십시오.

Public Sub AppActTest() 
    Dim objWd As Object 
    Dim objTsk As Object 
    Dim blOpenedByCode As Boolean 

    On Error Resume Next 
    Set objWd = GetObject(, "Word.Application") 
    If objWd Is Nothing Then 
     Set objWd = CreateObject("Word.Application") 
     blOpenedByCode = True 
    End If 
    On Error GoTo 0 

    For Each objTsk In objWd.Tasks 
     If InStr(objTsk.Name, "MainframeApplicationName") > 0 Then 
      objTsk.Activate 
      objTsk.WindowState = wdWindowStateMaximize 
      Exit For 
     End If 
    Next 

    If blOpenedByCode Then objWd.Quit 

    Set objTsk = Nothing 
    Set objWd = Nothing 

    End Sub 

컴퓨터에 Microsoft Word가 설치되어 있어야합니다. 부분 일치로 작동합니다.

+0

이 코드는 대단히 감사하겠습니다. 내 기존 코드는 2010 년이 아니라 Excel 2007에서 작동하므로 2007 년에는 응용 프로그램 제목과 분명히 일치합니다. – RShome

관련 문제