Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
ACCESSからEXCELを操作
投稿日時: 20/03/08 22:04:39
投稿者: hiro_h

教えてください。
ACCESSのVBAでEXCELを操作しています。
 
EXCELの指定シート名に対して、ACCESSの値が入力できません。
 
Public Function EXEXP()
 
    Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言
    Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言
    Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言
    Dim FilePath As String
    Dim DTPASS As String 'ローカルデスクトップのパスを取得
     
    'まずローカルにEXCELブックをコピーする
  'クライアントPCのデスクトップの値を取得
    DTPASS = CreateObject("WScript.Shell").SpecialFolders("Desktop")
   
    'マスタとなるエクセルファイルを元フォルダからクライアントデスクトップにコピーする
    FileCopy "C:\Users\クライアントPC\Desktop\元フォルダ\EXCELテンプレート.xls", DTPASS & "\" & "EXCELテンプレート.xls"
        
    FilePath = DTPASS & "\" & "EXCELテンプレート.xls" 'Excelファイルのパスを指定
     
    Set AppObj = CreateObject("Excel.Application") '実行時バインディング
    Set WBObj = AppObj.WorkBooks.Open(FilePath) 'ワークブックを開く
  '※EXCEL Sheet1に値を入力したい
    Set WsObj = WBObj.Worksheets("Sheet1")
  'シート名に関係なく選択する場合は下記でよいか?
  Set WsObj = WBObj.Worksheets(1) '左から1、2、3となる?
     
    AppObj.Visible = False 'Excelアプリケーションを非表示にする
     
    'ワークシートへの処理
    'ACCESSフォームの値をEXCELのセルに反映
    With WsObj.Application
    .Range("A5").Select
    .Range("A5").Value = Forms![TABLE_F]![客先]
    .Range("J3").Select
    .Range("J3").Value = Forms![MTABLE_F]![作成日]
    .Range("K4").Select
    .Range("K4").Value = Forms![MTABLE_F]![ナンバー]
    End With
        
    'Excelを保存して閉じる
    WBObj.Save 'ワークブックを保存する
    WBObj.Close 'ワークブックを閉じる
    AppObj.Quit
     
End Function

回答
投稿日時: 20/03/08 22:44:09
投稿者: よろずや

引用:
  'シート名に関係なく選択する場合は下記でよいか?
  Set WsObj = WBObj.Worksheets(1) '左から1、2、3となる?
OKです。
 
引用:
With WsObj.Application
    .Range("A5").Select
    .Range("A5").Value = Forms![TABLE_F]![客先]
    .Range("J3").Select
    .Range("J3").Value = Forms![MTABLE_F]![作成日]
    .Range("K4").Select
    .Range("K4").Value = Forms![MTABLE_F]![ナンバー]
End With
With WsObj
    .Range("A5").Value = Forms![TABLE_F]![客先]
    .Range("J3").Value = Forms![MTABLE_F]![作成日]
    .Range("K4").Value = Forms![MTABLE_F]![ナンバー]
End With
 
です。

投稿日時: 20/03/09 21:39:43
投稿者: hiro_h

よろずや さんの引用:
引用:
  'シート名に関係なく選択する場合は下記でよいか?
  Set WsObj = WBObj.Worksheets(1) '左から1、2、3となる?
OKです。
 
引用:
With WsObj.Application
    .Range("A5").Select
    .Range("A5").Value = Forms![TABLE_F]![客先]
    .Range("J3").Select
    .Range("J3").Value = Forms![MTABLE_F]![作成日]
    .Range("K4").Select
    .Range("K4").Value = Forms![MTABLE_F]![ナンバー]
End With
With WsObj
    .Range("A5").Value = Forms![TABLE_F]![客先]
    .Range("J3").Value = Forms![MTABLE_F]![作成日]
    .Range("K4").Value = Forms![MTABLE_F]![ナンバー]
End With
 
です。

 
 
ありがとうございます。
無事動作しました。