
No.2
- 回答日時:
検証しませんが、おそらく動作すると思います。
Private Function Excel_Out(WorkTable As String) As Boolean
Dim Ex As Excel.Application 'エクセルリンク用変数(App)
Dim Wb As Excel.Workbook 'エクセルリンク用変数(App)
Dim Ws As Excel.Worksheet 'エクセルリンク用変数(App)
Dim Cnt As Long
Dim PageCnt As Long
Dim strSQL As String
Dim oRs As Recordset
Dim RecCnt As Long
Dim i As Long
Dim FileName As String
Dim FileNameS As String
On Error GoTo Excel_Out_Err
FileName = "C:TEST_MOTO.xls"
FileNameS = "C:\TEST.xls"
Excel_Out = False
DoCmd.Hourglass True
'エクセルシートオープン
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(FileName)
Ex.DisplayAlerts = False
Set Ws = Wb.Worksheets("Sheet1")
'ワークテーブルのオープン
strSQL = ""
strSQL = strSQL & "Select * From " & WorkTable
Set oRs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
RecCnt = oRS.RecordCount
InsCnt = RecCnt - X ←ここでインサートに必要な行数を計算してください。
for i = 1 to InsCnt
Ws.Rows("2:2").Select ←インサート行う位置の指定です。
Selection.Insert Shift:=xlDown
Next i
Do Until oRs.EOF
Cnt = Cnt + 1
Ws.Cells(Cnt, 1) = oRs.Fields("A").Value
Ws.Cells(Cnt, 2) = oRs.Fields("B").Value
Ws.Cells(Cnt, 3) = oRs.Fields("C").Value
・
・
・
oRs.MoveNext
Loop
oRs.Close
Set oRs = Nothing
Wb.SaveAs FileNameS
Ex.DisplayAlerts = True
Wb.Close
Ex.Quit
Set Ws = Nothing
Set Wb = Nothing
Set Ex = Nothing
Excel_Out = True
Exit Function
Excel_Out_Err:
Excel_Out = False
End Function
この回答への補足
回答ありがとうございます。
早速実行してみましたが、
Selection.Insert Shift:=xlDown
のところで、
実行時エラー'424'
オブジェクトが必要です
のメッセージが表示されます。
ここは、そのまま代用したのですが、何か変更するところがあったのでしょうか?
オブジェクトはどこに、どのオブジェクトをつけたらいいのでしょうか?
Selectionの前に、ワークシートのオブジェクトをつけてみましたが、
実行時エラー'438'
オブジェクトはこのプロパティまたはメソッドをサポートしていません。
のメッセージが表示されました。
No.1
- 回答日時:
モデファイして、お使いください。
Private Function Excel_Out(WorkTable As String) As Boolean
Dim Ex As Excel.Application 'エクセルリンク用変数(App)
Dim Wb As Excel.Workbook 'エクセルリンク用変数(App)
Dim Ws As Excel.Worksheet 'エクセルリンク用変数(App)
Dim Cnt As Long
Dim PageCnt As Long
Dim strSQL As String
Dim oRs As Recordset
Dim FileName As String
Dim FileNameS As String
On Error GoTo Excel_Out_Err
FileName = "C:TEST_MOTO.xls"
FileNameS = "C:\TEST.xls"
Excel_Out = False
DoCmd.Hourglass True
'エクセルシートオープン
Set Ex = New Excel.Application
Set Wb = Ex.Workbooks.Open(FileName)
Ex.DisplayAlerts = False
Set Ws = Wb.Worksheets("Sheet1")
'ワークテーブルのオープン
strSQL = ""
strSQL = strSQL & "Select * From " & WorkTable
Set oRs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Do Until oRs.EOF
Cnt = Cnt + 1
Ws.Cells(Cnt, 1) = oRs.Fields("A").Value
Ws.Cells(Cnt, 2) = oRs.Fields("B").Value
Ws.Cells(Cnt, 3) = oRs.Fields("C").Value
・
・
・
oRs.MoveNext
Loop
oRs.Close
Set oRs = Nothing
Cnt = Cnt + 1
Ws.Cells(Cnt, 1) = "=SUM(A1:A" & Cnt & ")"
Ws.Cells(Cnt, 2) = "=SUM(B1:B" & Cnt & ")"
Ws.Cells(Cnt, 3) = "=SUM(C1:C" & Cnt & ")"
・
・
・
Wb.SaveAs FileNameS
Ex.DisplayAlerts = True
Wb.Close
Ex.Quit
Set Ws = Nothing
Set Wb = Nothing
Set Ex = Nothing
Excel_Out = True
Exit Function
Excel_Out_Err:
Excel_Out = False
End Function
この回答への補足
回答ありがとうございます。
私の説明が下手ですいません。
Excelのシートにはレイアウトが設定してあるために、それを生かしてつくりたいと思っています。
データをExcelに書き込むところまでは、出来ているのですが、行数が超えた場合に、現状では合計の行を上書きしてしまっています。
表の最後と合計との間にデータを追加したいのです。
1命令で行の挿入とかってできないのでしょうか?
ExcelのVBAには行の挿入がありますよね?
ACCESSのVBAからExcelのVBAを呼び出すとかも出来ないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSのVBで、エクセルファイルの最終行を取得
Excel(エクセル)
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
-
4
ACCESSのVBAにてExcelのシートをコピーしたい
その他(データベース)
-
5
AccessにてExcelの印刷範囲を設定したい
Excel(エクセル)
-
6
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー
Access(アクセス)
-
9
Access-VBAでExcelファイルを作成する。
Excel(エクセル)
-
10
ACCESS VBAでExcelを開き行をコピーしたい
Visual Basic(VBA)
-
11
アクセスvbaでエクセルブックを保存
その他(Microsoft Office)
-
12
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
13
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
14
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
15
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
16
ACCESSからEXCELの PasteSpecial でエラーになる
Excel(エクセル)
-
17
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
18
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
19
Access で 特定の文字の個数をしりたい
Access(アクセス)
-
20
Access VBAよりシート名を取得したい
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既存データをINSERT文にして出...
-
副問合せを使わずにUNIONと同様...
-
データ無し時は空白行にしたい...
-
SQLで、Join句で結合したテ...
-
【SQL】他テーブルに含まれる値...
-
指定した年に在籍していた社員...
-
ADO+ODBCでテーブルに接続する...
-
親子関係があるテーブルでの抽出
-
Win版ApacheでAccessのクエリー...
-
DB2のSQLコマンドについて
-
(SQL)日数の計算
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
sqlに記述できない文字
-
Access にて "mm:ss.0" 形式の ...
-
既にテーブルが存在する場合の...
-
T-SQLで任意の箇所で強制終了す...
-
追加クエリで重複データなしで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
SQLサーバに対するSQL文で抽出...
-
テーブル名が可変の場合のクエ...
-
ADO+ODBCでテーブルに接続する...
-
結合したテーブルをSUMしたい
-
副問合せを使わずにUNIONと同様...
-
行と列の入れ替え検索(行は可...
-
改行を含んだデータのインポート
-
SQLiteでソートした結果をファ...
-
2つのテーブルをLIKE演算子のよ...
-
ACCESSのVBAにてExcelに行...
-
ExcelのMatch関数のようなもの...
-
PRIMARY KEYのコピー
-
ExcelのVLOOKUP関数の動作をMyS...
-
DB2のSQLコマンドについて
-
データ無し時は空白行にしたい...
-
SQLです!!教えてください。あ...
おすすめ情報