2

シナリオ:ユーザーから、.xlsを選択できるボタンを提供するように求められました。これにより、データがテーブルの対応する列にインポートされます。

質問:以下のコードを提供しますが、基本的にワークブックを開こうとすると、以下のエラーが発生します。私はいくつかの解決策をグーグルで検索しましたが、それでもこのエラーが発生します。 代替テキスト

    Private Sub Command20_Click()
     Dim fdg As FileDialog, vrtSelectedItem As Variant
Dim strSelectedFile As String

Set fdg = Application.FileDialog(msoFileDialogFilePicker)

With fdg
  .AllowMultiSelect = False
  .ButtonName = "Select"
        .InitialView = msoFileDialogViewList
        .Title = "Select Input Files"

        'add filter for excel
        With .Filters
            .Clear
            .Add "Excel Spreadsheets", "*.xls"
        End With
        .FilterIndex = 1
    If .Show = -1 Then
      For Each vrtSelectedItem In .SelectedItems    'onby be 1
      Dim app As New Excel.Application

      app.Workbooks.Open (vrtSelectedItem)
      app.Worksheets(1).Activate
      For Each rwRow In ActiveWorkbook.Worksheets(1).Rows
        ' Do things with the rwRow object
        Next rwRow
        strSelectedFile = vrtSelectedItem
      Next vrtSelectedItem
      Me![txtSelectedFile] = strSelectedFile
    Else     'The user pressed Cancel.
    End If
End With

Set fd = Nothing
End Sub
4

2 に答える 2

2

app.Workbooks.Openなぜそのエラーが発生するのかわかりません。ただし、問題の特定に役立つ場合とそうでない場合があるいくつかの変更を提案します。

  1. モジュールの宣言セクションに追加Option Explicitします。次に、VBE メイン メニューから Debug->Compile を実行して、Dim していない変数を表示します。
  2. app.Visible = True後に含めるDim app As New Excel.Applicationと、Excel で何が起こっているかを監視できます
  3. 手順の最後にapp.Quitand を追加しますSet app = Nothing
于 2010-11-03T21:54:57.963 に答える
2

うーん..私から動作します。

その後の4行をコメントアウトしapp.Worksheets(1).ActivateMe![txtSelectedFile] = ...

set fd = Nothing私はに変更しなければなりませんでしたfdg

Excelファイル自体に何か問題があるのだろうか。ゼロから作成したものを試しましたか?

于 2010-11-03T22:05:14.580 に答える