コマンドボタンからダイアログにいきキャンセルしたときに
上手く戻れずにエラーが返ってきてしまいます。
流れ
①MENUフォーム→②フォーム1→③ダイアログから画像選択
④間違えてキャンセル→⑤フォーム1に戻る
ようにしたいです。
エラーが返ってくるのでフォーム1をunloadし、キャンセルが返ってきたら再表示
になるようにしてみたもののエラーが返ってきます。実行時エラー5152
★の行がエラーとなる。
キャンセルしたときにendを選択するとフォームすべてが終了してしますうので
何かいい方法ありませんか?
Private Sub CommandButton2_Click()
Dim PIC As Shape
Dim shp As Word.Shape
Dim pg As Long
Dim i As Integer
Dim oDialog As Word.Dialog
' 図の挿入ダイアログで図を指定
Set oDialog = Dialogs(wdDialogInsertPicture)
With oDialog
.Display
Unload UserForm1
If Application.FileDialog(msoFileDialogFilePicker).SelectedItems.Count >= 1 Then
MsgBox Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
Else
MsgBox "キャンセル"
UserForm1.Show vbModeless
End If
' 各ページごとの処理
pg = Selection.Information(wdNumberOfPagesInDocument)
For i = 1 To pg
Selection.GoTo What:=wdGoToPage, _
Which:=wdGoToAbsolute, _
Count:=i
' 画像処理
★ Set PIC = ActiveDocument.Shapes.AddPicture(filename:=.Name)
With PIC
'ファイル選択ダイアログでキャンセルした場合に分岐する
.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = _
wdRelativeVerticalPositionPage
'.Left = wdShapeCenter
'.Top = wdShapeCenter
.Left = TextBox1.Value
.Top = TextBox2.Value
End With
Set PIC = Nothing
Next
End With
Set oDialog = Nothing
End Sub
No.2ベストアンサー
- 回答日時:
#1です
あらためてコードを読んでみました。
#1の回答よりもっと前段で振り分けるべきのようですね。
Application.FileDialog(msoFileDialogFilePicker)などの使用意図がイマイチ分からないので#1を書き直してみました。
Private Sub CommandButton2_Click()
Dim PIC As Shape
Dim shp As Word.Shape
Dim pg As Long
Dim i As Integer
Dim oDialog As Word.Dialog
If Not IsNumeric(TextBox1.Value) And Not IsNumeric(TextBox1.Value) Then
MsgBox ("テキストボックスの値が不正です")
Exit Sub
End If
' 図の挿入ダイアログで図を指定
Set oDialog = Dialogs(wdDialogInsertPicture)
With oDialog
.Display
Unload UserForm1
If .Name <> "" Then
MsgBox .Name
Else 'ファイル選択ダイアログでキャンセルした場合に分岐する
MsgBox "キャンセル"
UserForm1.Show vbModeless
Exit Sub
End If
' 各ページごとの処理
pg = Selection.Information(wdNumberOfPagesInDocument)
For i = 1 To pg
Selection.GoTo What:=wdGoToPage, _
Which:=wdGoToAbsolute, _
Count:=i
' 画像処理
Set PIC = ActiveDocument.Shapes.AddPicture(FileName:=.Name)
With PIC
.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = _
wdRelativeVerticalPositionPage
'.Left = wdShapeCenter
'.Top = wdShapeCenter
.Left = TextBox1.Value
.Top = TextBox2.Value
End With
Set PIC = Nothing
Next
End With
Set oDialog = Nothing
End Sub
MsgBox .Name についてはファイル名のみを表示したい場合は
文字列の右から\までを取得するような加工などが必要です
回答ありがとうございます。
Application.FileDialog(msoFileDialogFilePicker)についてはネットにてダイアログのキャンセルの時の分岐について記載があったので入れてみたりしていました。
おかげさまで考えていたとおりの動きを確認することができました。
ありがとうございました。
No.1
- 回答日時:
こんにちは
word_VBAは詳しくないのですが、
oDialog.Nameがキャンセルによって取得できない為ではないかと思います。
キャンセルなのでその後の実行は必要ないかと、、ループ処理内なので
条件設定を加えて、その後の処理を行うか、飛ばすのか、処理分岐すれば良いように思います
iループ部分の提案
For i = 1 To pg
Selection.GoTo What:=wdGoToPage, _
Which:=wdGoToAbsolute, _
Count:=i
' 画像処理
If .Name <> "" Then 'ファイル選択ダイアログでキャンセルした場合に分岐する
Set PIC = ActiveDocument.Shapes.AddPicture(FileName:=.Name)
With PIC
.RelativeHorizontalPosition = _
wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = _
wdRelativeVerticalPositionPage
'.Left = wdShapeCenter
'.Top = wdShapeCenter
.Left = TextBox1.Value
.Top = TextBox2.Value
End With
Set PIC = Nothing
End If
Next
*ほぼコピー、未検証なのでデバッグを行ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
友人(4人)との旅行当日体調不...
-
友人と2人で行くはずの旅行を...
-
至急!詐欺の可能性がある裏DVD...
-
タイミーで応募キャンセルされ...
-
通販でキャンセルした商品が届...
-
急に旅行に行けないかもしれな...
-
お葬式で旅行がキャンセルに
-
当日キャンセルした飲み会のキ...
-
飲み会を当日キャンセルしたん...
-
強制出張と旅行が被った場合の...
-
旅行のキャンセル料について相...
-
当日キャンセル料の請求について
-
2回連続ママ友にドタキャンされ...
-
前からの約束、当日に連絡がき...
-
confirm の OK、キャンセル ...
-
「参考になった」キャンセル方法
-
女友達が向こうから誘ってきた...
-
一ヶ月前に友達と会う約束をし...
-
社員旅行、体調不良でドタキャ...
-
急ぎの質問です。 職場の課の忘...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「参考になった」キャンセル方法
-
友人と2人で行くはずの旅行を...
-
友人(4人)との旅行当日体調不...
-
タイミーで応募キャンセルされ...
-
通販でキャンセルした商品が届...
-
当日キャンセル料の請求について
-
お葬式で旅行がキャンセルに
-
裏DVD
-
2回連続ママ友にドタキャンされ...
-
急に旅行に行けないかもしれな...
-
当日キャンセルした飲み会のキ...
-
confirm の OK、キャンセル ...
-
当日キャンセルしてしまった美...
-
美容室でのネット予約を2日くら...
-
至急!詐欺の可能性がある裏DVD...
-
ドタキャンの知人に飲み会のキ...
-
ジャンカラで支払いせず出てき...
-
旅行のキャンセル料について相...
-
飲み会を当日キャンセルしたん...
-
社員旅行、体調不良でドタキャ...
おすすめ情報