Access VBA質問箱 IV

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

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


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

【7356】雛形ファイルへのリッセトについて kama 06/2/22(水) 12:44 質問[未読]
【7357】Re:雛形ファイルへのリッセトについて 小僧 06/2/22(水) 14:10 回答[未読]
【7360】Re:雛形ファイルへのリッセトについて kama 06/2/22(水) 18:30 質問[未読]
【7365】Re:雛形ファイルへのリッセトについて 小僧 06/2/23(木) 11:18 発言[未読]
【7368】Re:雛形ファイルへのリッセトについて kuma 06/2/23(木) 11:50 お礼[未読]

【7356】雛形ファイルへのリッセトについて
質問  kama  - 06/2/22(水) 12:44 -

引用なし
パスワード
   こんにちは
 ABC.XLSを雛形として、利用しています。
クエリsyuのデータをABC.XLSへ出力する前に、
A1〜L210の範囲のデータを削除するために、
以下のコードを書かくました。
実行すると、
「実行時エラー3061:パラメータが少なすぎます、11を指定してください」
11に変更したら、次回10を指定してください。
問題はどこでしょうか?
ご指導ください。よろしくお願いします。

Function T_056()
Const csXlPath As String = "C:\ABC.xls"
  Dim i As Long
  Dim vsSQL As String
For i = 1 To 12
vsSQL = vsSQL & ",F" & i & " = Null"
Next i
vsSQL = "UPDATE [QTemp$A1:L210] " _
& "IN '' [Excel 8.0;HDR=No;DATABASE=" & csXlPath & "] " _
& "SET " & Mid(vsSQL, 2) & ";"
CurrentDb.Execute vsSQL
DoCmd.TransferSpreadsheet acExport, 8, "syu", "C:\ABC.xls", True, ""
End Function

【7357】Re:雛形ファイルへのリッセトについて
回答  小僧  - 06/2/22(水) 14:10 -

引用なし
パスワード
   ▼kama さん:
こんにちは。

>「実行時エラー3061:パラメータが少なすぎます、11を指定してください」

こちらについては、現在 C:\ABC.xls は A 列にしか値が入っていない状態ではないでしょうか。

A 〜 L と12個の値を格納するのに、
受け皿が狭い為にパラメータを要求されているのだと思います。

>[QTemp$A1:L210]

は残念ながら認識してくれない模様です。


さて、kama さんの行いたい事はもう一つ厄介な点を抱えています。

MS の技術情報より
http://support.microsoft.com/kb/904953/#kb1

2005年10月18日に発表された Office の update を適用すると、
DAO による Excel の更新ができなくなってしまいます。
(実行時エラー '3073' 更新可能なクエリである事が必要です。 と表示されます)

この問題は現在の所、オートメーションを用いて回避する方法が一般的です。


Sub T_056改()
'要参照 DAO x.x Object Library
Const csXlPath As String = "C:\ABC.xls"
Dim i As Long
Dim xlsApp As Object
Dim xlsWkb As Object
Dim RS As DAO.Recordset

  Set RS = CurrentDb.OpenRecordset("syu", dbOpenSnapshot)
  Set xlsApp = CreateObject("Excel.Application")
  Set xlsWkb = xlsApp.Workbooks.Open(csXlPath)
  'xlsApp.Visible = True
  With xlsWkb.Sheets("QTemp")
    .Range("A1:L210").ClearContents
    
    For i = 1 To RS.Fields.Count
      .Cells(1, i).Value = RS(i - 1).Name
    Next
    
    .Range("A2").CopyFromRecordset RS
  End With
  
  xlsWkb.Close True: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
End Sub


クエリ名が「syu」で、Excelシート名が「QTemp」なのが気になりますが、
適宜改良して使用してみて下さい。

【7360】Re:雛形ファイルへのリッセトについて
質問  kama  - 06/2/22(水) 18:30 -

引用なし
パスワード
   ▼小僧 さん:
 ありがとうございます。
>こんにちは。
>
>>「実行時エラー3061:パラメータが少なすぎます、11を指定してください」
>
>こちらについては、現在 C:\ABC.xls は A 列にしか値が入っていない状態ではないでしょうか。
>
>A 〜 L と12個の値を格納するのに、
>受け皿が狭い為にパラメータを要求されているのだと思います。
>
>>[QTemp$A1:L210]
>
>は残念ながら認識してくれない模様です。
>
>
>さて、kama さんの行いたい事はもう一つ厄介な点を抱えています。
>
>MS の技術情報より
>http://support.microsoft.com/kb/904953/#kb1
>
>2005年10月18日に発表された Office の update を適用すると、
>DAO による Excel の更新ができなくなってしまいます。
>(実行時エラー '3073' 更新可能なクエリである事が必要です。 と表示されます)
>
>この問題は現在の所、オートメーションを用いて回避する方法が一般的です。
仮にupdate を適用した場合は、以下のコードもつかえなくなるのでしょうか?
教えていただきたいです。
>
>Sub T_056改()
>'要参照 DAO x.x Object Library
>Const csXlPath As String = "C:\ABC.xls"
>Dim i As Long
>Dim xlsApp As Object
>Dim xlsWkb As Object
>Dim RS As DAO.Recordset
>
>  Set RS = CurrentDb.OpenRecordset("syu", dbOpenSnapshot)
>  Set xlsApp = CreateObject("Excel.Application")
>  Set xlsWkb = xlsApp.Workbooks.Open(csXlPath)
>  'xlsApp.Visible = True
>  With xlsWkb.Sheets("QTemp")
>    .Range("A1:L210").ClearContents
>    
>    For i = 1 To RS.Fields.Count
>      .Cells(1, i).Value = RS(i - 1).Name
>    Next
>    
>    .Range("A2").CopyFromRecordset RS
>  End With
>  
>  xlsWkb.Close True: Set xlsWkb = Nothing
>  xlsApp.Quit: Set xlsApp = Nothing
>End Sub
>
>
>クエリ名が「syu」で、Excelシート名が「QTemp」なのが気になりますが、
>適宜改良して使用してみて下さい。

【7365】Re:雛形ファイルへのリッセトについて
発言  小僧  - 06/2/23(木) 11:18 -

引用なし
パスワード
   ▼kama さん:
まず初めに…。

前回の質問に対する当方の回答はいかがだったのでしょうか。
kama さんだけでなく、同じ様な悩みを持つ方が過去ログとして参照するかもしれません。
回答に対する結果報告は必ずして下さいね。


>仮にupdate を適用した場合は、以下のコードもつかえなくなるのでしょうか?
>教えていただきたいです。

>>オートメーションを用いて回避する

方法として先のコードを提示しました。
今のところは問題なく作動しています。
(当方 WinXP,Ac2002,Ex2002です)

【7368】Re:雛形ファイルへのリッセトについて
お礼  kuma  - 06/2/23(木) 11:50 -

引用なし
パスワード
   小僧さん
 この問題でずっと悩まされて、今回のレッセンで解決できましたので、
ありがとうございました。

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