Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


97 / 2272 ツリー ←次へ | 前へ→

【13034】エクセル終了処理? らび 16/6/7(火) 16:43 質問[未読]
【13035】Re:エクセル終了処理? かるびの 16/6/8(水) 10:42 回答[未読]
【13036】Re:エクセル終了処理? らび 16/6/8(水) 12:13 お礼[未読]

【13034】エクセル終了処理?
質問  らび E-MAIL  - 16/6/7(火) 16:43 -

引用なし
パスワード
   こんにちわ。
アクセスからエクセルに日付を更新、保存してエクセルを開放。
もう一度同じ処理を実行すると、アプリケーション定義又はオブジェクト定義のエラーとなります。一旦アクセスを終了し、起動すると解消されます。エクセルの終了処理に間違いがあるのか、いろいろ検索しましたが、わかりかねています。
ソースを載せますので、よろしくお願い致します。

Dim xlApp                As Excel.Application
Dim xlBook               As Excel.Workbook
Dim xlSheet               As Excel.Worksheet

  Set xlApp = CreateObject("Excel.Application")
  Set xlBook = xlApp.Workbooks.Open(FilePass)
  Set xlSheet = xlBook.Worksheets("aaa")

  xlSheet.Select
  xlSheet.Range("G1").Select
  ’↓↓ここでエラー 
  MaxRow = Cells(xlSheet.Rows.Count, 7).End(xlUp).Row

  If MaxRow <> 1 Then
  
    i = Range("G1").End(xlDown).Row - 1
    X = 2
    Do Until X > i
        
      If Left(xlSheet.Cells(X, 16), 7) = Left(Me!txtfrom, 7) Then
        xlSheet.Cells(X, 31).Value = DateAdd("m", 1, Me!txtfrom) - 1
      End If
      X = X + 1
    Loop
  End If    

  Set xlSheet = xlBook.Worksheets("bbb")
  xlSheet.Select
  xlSheet.Range("A1").Select
  
  MaxRow = Cells(xlSheet.Rows.Count, 1).End(xlUp).Row
  
  If MaxRow <> 1 Then
   
  
    i = Range("A1").End(xlDown).Row - 1
    X = 2
    Do Until X > i
        
      If Left(xlSheet.Cells(X, 6), 7) = Left(Me!txtfrom, 7) Then
        xlSheet.Cells(X, 18).Value = DateAdd("m", 1, Me!txtfrom) - 1
      End If
      X = X + 1
    Loop
  End If

  xlBook.Close saveChanges:=True
  xlApp.Quit
  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing

'  xlBook.Save
'  xlBook.Close False
'  xlApp.Quit
'  Set xlApp = Nothing

【13035】Re:エクセル終了処理?
回答  かるびの  - 16/6/8(水) 10:42 -

引用なし
パスワード
   >MaxRow = Cells(xlSheet.Rows.Count, 7).End(xlUp).Row

 Cells プロパティって何ですか。そんなプロパティは、アクセスにはありません。

 アクセスではない他のアプリケーションのオブジェクト、例えばエクセルの Range オブジェクトを使いたければ、
アプリケーションオブジェクトから指定してやらなければ、
「アクセス」には、それが何なのか理解できません。


 ちなみに、
>i = Range("G1").End(xlDown).Row - 1
も同様です。
 アクセスには、Range プロパティなどなく、Range オブジェクトなんてありませんから、
「アクセス」は Range("G1") が何なのか理解できません。


 でも、
>xlSheet.Cells(X, 31).Value = DateAdd("m", 1, Me!txtfrom) - 1
のところは、ちゃんとできてますね。

【13036】Re:エクセル終了処理?
お礼  らび E-MAIL  - 16/6/8(水) 12:13 -

引用なし
パスワード
   こんにちわ。
エクセルのプロパティーをアプリケーションを指定しないで記述していたことが原因でした。解決しました!本当に、ありがとうございました。

97 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free