Microsoft Access 掲示板

フォームからExcelファイルの一部分をインポートしたい / 18

27 コメント
views
18
PPP 2025/07/14 (月) 22:17:48 修正 50473@7267b >> 9

(4-1)長いので(4-1)と(4-2)(4-3)に分割して投稿します
※4-1)の部分は変数の宣言部分となります

'エクセルファイルをACCESSのテーブルにとりこむための
'コールプロシージャー
Private Sub callExceltable()
On Error Resume Next

    'エクセルのアプリケーションをNewキーワードで実体化(インスタンス化)する
    Dim myXlApp As Excel.Application
        Set myXlApp = New Excel.Application
  
    'エクセルのワークブックを
    '共通変数[vrtSelectedItem]で取得した取りこみするエクセルを
    '選択してオブジェクトを生成する
    Dim myXlWorkbook As Excel.Workbook
        Set myXlWorkbook = myXlApp.Workbooks.Open(vrtSelectedItem)
    
    'エクセルのワークシートを生成する
    'Sheet1のワークシートを指定して読み込む準備を整える
    Dim myXlWorksheet As Excel.Worksheet
        Set myXlWorksheet = myXlWorkbook.Sheets("Sheet1") '読み込むシート名を指定
        
    'エクセルの最終行の値を取得する変数
    Dim myLastRow As Long
    
        'エクセルシート入力している最終行を取得
        'セル番地[A]に入力している最終行を取得して変数へ代入する
        myLastRow = myXlWorksheet.Cells(myXlWorksheet.Rows.Count, "A").End(xlUp).Row

    '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    '番地は固定
    
        'エクセル番地[A1]の値を代入
        myNo = myXlWorksheet.Cells(1, 1).Value
    
        'エクセル番地[H2]の値を代入(発注番号)
       myOrderNo = myXlWorksheet.Cells(2, 8).Value
    
    '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
        
        'ADO経由で取り込みテーブルにエクセルデータを転記する
        'VBエディターのツールの参照設定で
        'microsoft ActivX Data object 6.1llibraryにレ点を入れる
        
        'ADOの接続のオブジェクトの宣言を行う
        Dim cn As ADODB.Connection
        
        'ADOのレコードセットの宣言を行う
        Dim rs As ADODB.Recordset
        
            '現在のACCESSのテーブルに接続する
            Set cn = CurrentProject.Connection
            
            'レコードセットのインスタンスをNewキーワードで生成する
            Set rs = New ADODB.Recordset
                
                '取り込みをおこなう[orderCapture]テーブルを開く
                rs.Open "orderCapture", cn, adOpenKeyset, adLockOptimistic
                        
                        '※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
                        '取り込むテーブル[orderCapture]に今回取り込むエクセルデータが
                        'あるかを照合する
                        '[コンボBOXの発注者ID]+[受注番号]+[No]を結合した管理番号が
                        'テーブルに存在すれば、取り込み済みと判断する
                        '変数を増やしたくないので配列変数で対応する
                        
                        'unionFormatNo(0)はフォーマットして取り込む文字列を生成する
                        '[コンボBOXの発注者ID]+[受注番号]+[No]を結合した管理番号
                        '例:[AA-1111-0001]
                        Dim unionFormatNo(2) As String
                            
                        'ForNextステートメントのカウンター変数
                        '[i]はエクセルのファイルに登録してある件数をカウントする変数
                        Dim i As Long
                            
                        '[j]はエクセルファイルを実際に登録した件数をカウント
                        'すでにあるデータは登録させないアルゴリズムを組んでいるので
                        '実際の件数をjの変数で取得させる
                        Dim j As Integer
                        '初期化しておく
                            j = 0
通報 ...