Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


Excelからデータをインポートする方法:SampleFile127



前回では、AccessからExcelへデータをエクスポートする方法をご紹介しました。今回は、逆にエクセルからデータをインポートする方法を取り上げて見ます。Excelデータは下記のようなものです。セルの範囲は、A1:D71とします。※特にセル範囲を指定せずに、例えば「Sheet1」のワークシート全体をインポートする場合は不要です。

 

 

ExcelからAccessテーブルへデータをインポートするのには、TransferSpreadsheet メソッド を用います。このメソッドの詳細は前号(125)をご覧下さい。下記のようなフォームからインポートを実行します。

 

 

 

Excelへデータ出力

コマンドボタンのクリック時イベントに下記のようなプロシージャを記述しています。

 

Private Sub コマンド0_Click()

    Dim strac As String
    Dim strxls As String
    Dim strmsg As String
    
    strac = "tbl_sample"  'Accessテーブルを指定します。
    strxls = "C:\My Documents\sample_127.xls" 'エクセルファイルを指定します。
    strmsg = "Accessファイル " & strac & " を、エクセルファイルへデータ出力を行います。" _
             & Chr(13) & Chr(13) & "出力先は " & strxls & " で、 シート名は " & strac & _
             " です。" & Chr(13) & Chr(13) & _
             "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージです。
                
    If MsgBox(strmsg, vbOKCancel, "Microsoft Access Club") = vbOK Then
        
        '最初のデータをフィールド名として使います。
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, strac, strxls, True
        MsgBox "データ出力は、正常に完了しました。", , "Microsoft Access Club"
        
    End If

End Sub

 

 

 

Excelからのデータ入力

コマンドボタンのクリック時イベントに下記のようなプロシージャを記述しています。

Private Sub コマンド1_Click()

On Error GoTo エラー

    Dim strac As String
    Dim strxls As String
    Dim strrange As String
    Dim strmsg As String

    strac = "tbl_sample_Import" 'Accessテーブルを指定します。
    strxls = "C:\My Documents\sample_127.xls" 'エクセルファイルを指定します。
    strrange = "tbl_sample!A1:D71" 'データ入力のシート名とセル範囲を指定します。
    strmsg = "エクセルファイル" & strxls & " を、Accessファイル " & strac & _
             "として、データ入力を行います。" & Chr(13) & Chr(13) & _
             "エクセルファイルの入力レンジは、 " & strrange & " です。" & _
             "注意点としては、既にAccessファイル " & strac & Chr(13) & Chr(13) & _
             "が存在しているとデータを追加していきますので、実行前に " & strac & _
             "を削除しています。" & Chr(13) & Chr(13) & _
             "よろしければ、OKをクリックして下さい。" 'MsgBoxのメッセージです。


    DoCmd.DeleteObject acTable, strac 'テーブルを削除します。

    If MsgBox(strmsg, vbOKCancel, "Microsoft Access Club") = vbOK Then

        '最初のデータをフィールド名として使います。
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _
                                        strac, strxls, True, strrange
        
        MsgBox "データ入力は、正常に完了しました。"

    End If

    Exit Sub

エラー:

    Select Case Err.Number

        Case 7874
            'エラーの原因となったステートメントの、
            '次のステートメントからプログラムの実行を再開します。
            Resume Next
        Case Else
            MsgBox "予期せぬエラーが発生しました。" & Chr(13) & Chr(13) & _
                   "エラー番号:" & Err.Number & Chr(13) & Chr(13) & _
                   "エラー内容:" & Err.Description, 1, "Microsoft Access Club"
            End

        End Select

    End Sub
 

 

インポートする場合は、対象とするファイルが存在していない場合があります。そのため、エラー処理を必ず行って下さい。これは「リンク」の場合も必須です。

 

 

また、セル範囲を指定する場合、しない場合は、下記を参考にして下さい。

セルの範囲を指定 :  strrange = "tbl_sample!A1:D71" 

セルの範囲を非指定 : strrange = "tbl_sample"

※今回のサンプルの場合は、セル範囲をしてもしなくても同じ結果になります。

 

なお、複数回インポートを繰り返しても、Accessテーブルへはデータを追加して行きません。ご安心下さい(笑い)。

 

関連ページ

 

 

ページの先頭へ 前ページへ戻る

 


Excelからデータをインポートする方法:SampleFile127


 

-Microsoft Access Club-