Outlook VBAを使用してExcelを開く方法を見つけようとしていますが、まだ開いていない場合にのみ表示します。私は、Excelを開き、変更して閉じたコードをインターネット上で見つけることができましたが、Excelワークブックがすでに開いている場合はうまく動作しません(変更は適用されますが、それは単にグレーのインテリアを残すだけでなく、時にはエクスプローラにも表示されず、タスクマネージャーから閉じなければなりません)。 誰かがコードの大部分を説明できるかどうかを大いに感謝します。まだ開いていないExcelを開く方法
Public xlApp As Object
Public xlWB As Object
Public xlSheet As Object
Sub ExportToExcel()
Dim enviro As String
Dim strPath As String
'Get Excel set up
enviro = CStr(Environ("USERPROFILE"))
'the path of the workbook
strPath = enviro & "\Documents\test2.xlsx"
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err <> 0 Then
Application.StatusBar = "Please wait while Excel source is opened ... "
Set xlApp = CreateObject("Excel.Application")
bXStarted = True
End If
On Error GoTo 0
'Open the workbook to input the data
Set xlWB = xlApp.Workbooks.Open(strPath)
Set xlSheet = xlWB.Sheets("Sheet1")
' Process the message record
On Error Resume Next
xlWB.Close 1
If bXStarted Then
xlApp.Quit
End If
End Sub
私はxlWb
とxlSheet
オブジェクトが何をすべきか知っている、そして、それらがどのように宣言されている、と私はまたenviron
機能とstrPath
文字列は何をすべきかを理解し、私たちはbXStarted
ブール値を必要とする理由私はundestandしません何がSet xlApp = GetObject
であるのか、なぜApplication.StatusBar
メッセージが表示されないのですか。GetObject
とCreateObject
の違いと、なぜ多くのエラーテストが必要なのでしょうか。 ありがとうございます。
重要なことは、スクリプトが変更を保存していることです。とにかく、 'xlWB.Save 1'を' xlWB.Close 1'の前に書くことをお勧めしますか? – NAlexP
はオンエラーを取り出し、エラーが最初に何であるかを確認します。 –
コードからの考え方は、既に開いているワークブックを閉じるのではなく、閉じてからXStartedチェックを削除して終了するようにしたい場合に便利です。 –