SAPの巨大なレポートからデータを取り出し、Excelでクリーンアップを実行してAccessにロードするスクリプトを作成しようとしています。少なくとも、それは私の最終目標です。 SAPのデータは汚染されているため、私たちは、私たちの部門に特有のデータを整理した場所としてAccessに頼っています。
私は20年後に私が知っていたことを覚えていませんが、スクリプト作成の新人ですが、私はSAPとExcelの両方で組み込みのマクロジェネレータを使用しています。が欲しいです。私が今実行しているのは、「Microsoft Excelは、別のアプリケーションがOLEアクションを完了するのを待っています」というエラーです。これは、私のレポートが実行に非常に時間がかかるために起こりうると思われます。それはプロセスを停止し、これは私が設定して忘れることができ、午前中にデータを持っていると思われます。 スクリプトはExcelでマクロとして起動し、SAPに接続してレポートをトリガします。レポートが実行され、SAPを使用してExcelにエクスポートされます。レポートのサイズを考えると、1か2か月のチャンクでしか実行できませんが、1年分のデータを取得する必要があります。私はスクリプトを6回、2ヶ月ずつ繰り返すことができます。 2か月以上経過していれば、レポートは何かを生成する前にタイムアウトになります。私はこれを簡素化するためにSAPのバックグラウンドで」ファイル名を指定して実行を使用しようとしましたが、生成された出力が役に立たないほど文字化けしている。ここで私はこれまで持っているものである。SAPからExcelに戻って再び戻るスクリプト
Sub Experimental1()
' start the SAP portion
Dim SapGuiAuto, application, connection, session, WScript
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
'
' ***the above is key to opening a script in SAP. SAP must be running for this to work***
' begin ZSPWAR launch
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "zspwar"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 17
session.findById("wnd[1]/usr/txtENAME-LOW").Text = ""
session.findById("wnd[1]/usr/txtENAME-LOW").SetFocus
session.findById("wnd[1]/usr/txtENAME-LOW").caretPosition = 0
session.findById("wnd[1]").sendVKey 8 session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").currentCellRow = 8
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "8"
session.findById("wnd[1]").sendVKey 2
' adjust the date
session.findById("wnd[0]/usr/ctxtS_DATE-LOW").Text = (Date)
session.findById("wnd[0]/usr/ctxtS_DATE-HIGH").Text = (Date)
session.findById("wnd[0]/usr/ctxtS_LGORT-LOW").SetFocus
session.findById("wnd[0]/usr/ctxtS_LGORT-LOW").caretPosition = 0
session.findById("wnd[0]/tbar[1]/btn[8]").press
'begins save portion of script
'ignore warning from excel and keep going through long task
'application.IgnoreRemoteRequests = True
' end caffeine like behavior
session.findById("wnd[0]").maximize
session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
session.findById("wnd[1]/usr/cmbG_LISTBOX").Key = "08"
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").Select
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").SetFocus
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Ends Save portion
'back into Excel
ChDir _
"G:\Warranty\Strategy's\Special Projects\001 Process and Procedure Documentation\Databases\Core Return Database"
ActiveWorkbook.SaveAs Filename:= _
"G:\Warranty\Strategy's\Special Projects\001 Process and Procedure Documentation\Databases\Core Return Database\ZSPWAR test1.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
をこれは、私を除いて、私が何をしたいんExcelのエラーメッセージを介して子守しなければならないと私はあなたの問題を解決する方法を提供するSAPに戻って、あなたが私に。
てみてください。[ファイル] - > [オプション]> [詳細設定、および一般的な下DDE_ –
Application.DisplayAlertsを使用_Ignore他のアプリケーションをチェック= Falseの 私はその行を実行し、別のマクロを作成したときに動作するようです最初にメインマクロをサブルーチンとして組み込みます。 –