次の方法で共有

自作のExcelアドインで動作が停止する

Anonymous
2017-01-07T08:42:18+00:00

VBAのThisWorkbookのオブジェクトに

Option Explicit

Private Sub Workbook_Open()

 Dim FilePath As String

Stop

 With Application.FileDialog(msoFileDialogSaveAs)

 .Title = "タイトル"

 .FilterIndex = 4

 .ButtonName = "設定"

  If .Show = True Then

   FilePath = .SelectedItems(1)

  End If

 End With

 MsgBox (FilePath)

End Sub

と入力したExcelアドイン(*.xlam)を作成し、

作成したアドインを実行すると、Stopで止まり、その後F5(継続)で進めると、

 With Application.FileDialog(msoFileDialogSaveAs)

のところで

Microsoft Excelは動作を停止しました。

問題が発生したため、プログラムが正しく動作しなくなりました。

プログラムは閉じられ、解決策がある場合はWindowsから通知されます。

というエラーメッセージが出て強制終了します。

他のExcelが起動していた場合は正常に起動することもありますが

起動していても発生することもあります。

エラーが起きたPCの環境は

Windows7 Professional SP1

Excelバージョン 14.0.7177.5000(32ビット)

です。

やりたいことは

ダイアログを表示して、設定をしたパスを取得したいです。

エラーの回避若しくはこの他にもやり方があるようでしたらご教授願います。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2017-01-10T07:56:33+00:00

    確かにうまくいくことを確認いたしました。

    どうもApplication.FileDialogのパラメータが

    ・msoFileDialogFilePicker(ファイルを選択)だと正常に実行され、

    ・msoFileDialogSaveAs(ファイルの保存)にするとExcelがダウンするようです

    (その際に「.Filters.Add "エクセルブック", "*.xls"」 をコメント化しています)また他にExcelが開いている環境では正常に動作するようです。

    今回の場合、新規Excelブックを作成する場合に用いることがある為に、

    ご指摘のとおり、VBA専門フォーラムにて確認してみます。

    ご教授ありがとうございました。

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2017-01-08T11:02:39+00:00

    エラーの回避方法は分かりませんでした。

    下記マクロはエラーにはなりませんでしたが、

    お望みのものでないかもしれませんのでその時は無視してください。

    Private Sub Workbook_Open()

        Dim strFiles    As String

        Dim i           As Integer

        With Application.FileDialog(msoFileDialogFilePicker)

            .InitialFileName = "D:"

            .AllowMultiSelect = True

            .Filters.Add "エクセルブック", "*.xls"

            If .Show = True Then

                For i = 1 To .SelectedItems.Count

                    strFiles = strFiles & vbLf & .SelectedItems(i)

                Next i

                MsgBox "以下のファイルが選択されました。" & _

                        vbLf & strFiles, vbInformation

            Else

                MsgBox "ファイル選択がキャンセルされました。", vbExclamation

            End If

        End With

    End Sub


    >ダイアログを表示して、設定をしたパスを取得したいです。

     私ならこんな標準モジュールにしてみます。

    Sub 選択したファイルのフルネーム()

        Dim koko        As Long

        Dim strFiles    As String

        Dim i           As Integer

        koko = Cells(Rows.Count, 1).End(xlUp).Row

        With Application.FileDialog(msoFileDialogFilePicker)

            .InitialFileName = "D:"

            .AllowMultiSelect = True

            .Filters.Add "エクセルブック", "*.xls"

            If .Show = True Then

                For i = 1 To .SelectedItems.Count

                    Cells(koko + i, 1) = .SelectedItems(i)

                    strFiles = strFiles & vbLf & .SelectedItems(i)

                Next i

                MsgBox "以下のファイルが選択されました。" & _

                        vbLf & strFiles, vbInformation

            Else

                MsgBox "ファイル選択がキャンセルされました。", vbExclamation

            End If

        End With

    End Sub


    納得いく回答がお望みなら下記のようなVBA専門フォーラムでお聞きになったら如何でしょう。

    https://social.msdn.microsoft.com/Forums/ja-JP/home?forum=vbajp

    「Visual Basic for Application(VBA)」

    http://www.moug.net/faq/viewforum.php?f=2

    「Excel VBAに関するフォーラムです。 」

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません