固定範囲を選択してメールの準備をする簡単な関数があります。これは機能しますが、関数を2回実行した後でのみ機能します。この問題は、Excelスプレッドシートを開いた直後に発生します。次に、スクリプトを「終了」して再度実行すると、魅力のように機能します。
エラーが発生している理由を理解したいと思います。
エラー:ランタイムエラー1004:ワークシートクラスのメソッドの選択に失敗しました。
デバッグ時に、「。Parent.Select」という行が以下のスクリプトから強調表示されます。
Sub Select_Range_now()
Dim Sendrng As Range
Dim EndOfLine As Integer
EndOfLine = Find_First() - 1
Set Sendrng = Worksheets("Output").Range("B1:I" & EndOfLine)
ActiveWorkbook.EnvelopeVisible = True
With Sendrng
.Parent.Select
.Select
With .Parent.MailEnvelope
With .Item
.SentOnBehalfOfName = "groupemail@someemail.com"
.To = "someothergroupemail@someemail.com"
.CC = ""
.Subject = "Report"
End With
End With
End With
End Sub
編集:新しい発見:
「メール受信者」オプションをクリックすると、このmsgbox:msgboxダイアログが表示されます
電子メール:ワークブック全体を電子メールメッセージの添付ファイルとして送信することも、現在のシートを電子メールメッセージの本文として送信することもできます。
- ブック全体を添付ファイルとして送信する
- 現在のシートをメッセージ本文として送信します
そのボタンをもう一度クリックしても、これは再度表示されず、スクリプトはすぐに機能します。初めて実行するときは、このダイアログなどの処理に問題があるようだと思います。
Find_First()関数が何であるかを知る必要がある場合は、テキストENDOFLINEを検索するために使用されるため、選択範囲を計算できます。
Function Find_First() As String
Dim FindString As String
Dim Rng As Range
FindString = "ENDOFLINE"
With Sheets("Output").Range("A:I")
Set Rng = .Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
'Application.Goto Rng, True
'MsgBox "row number: " & Rng.Row
Find_First = Rng.Row
Else
'MsgBox "Nothing found"
End If
End With
End Function