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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- その他(Microsoft Office) excel テーブル 4 2023/03/18 16:11
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) OFFSET関数を使用した印刷範囲の自動変更について 2 2022/06/02 12:11
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルのVBAで上の表の最下行を求める 4 2022/09/14 15:22
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
AccessVBAで作成したExcelファイルを削除する方法は?
Visual Basic(VBA)
-
アクセスからエクセルのシートを追加して、名前をつける方法
Excel(エクセル)
-
-
4
Access VBAからExcelシートの削除
Excel(エクセル)
-
5
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
6
ACCESSのVBAにてExcelのシートをコピーしたい
その他(データベース)
-
7
AccessVBAでExcelを起動し、罫線を引きたいのですが、Exc
Visual Basic(VBA)
-
8
Accessにインポートしたら並び順が変わっちゃった
Access(アクセス)
-
9
ACCESS側からEXCELの書式を設定するには?
Visual Basic(VBA)
-
10
Access エクセルシート名変更
その他(プログラミング・Web制作)
-
11
ACCESSのVBで、エクセルファイルの最終行を取得
Excel(エクセル)
-
12
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
13
Access2000でのExcel行の削除法
Excel(エクセル)
-
14
「#エラー」の回避
Access(アクセス)
-
15
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
16
Access VBAから使用したExcelプロセスを閉じる方法について
Visual Basic(VBA)
-
17
AccessでExcelファイルを印刷
Excel(エクセル)
-
18
Accessでフィールド名を変数(文字列)で・・・
Access(アクセス)
-
19
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
20
ACCESSで400以上のフィールドがある場合の作成方法‥
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
既存データをINSERT文にして出...
-
データ無し時は空白行にしたい...
-
テーブル名が可変の場合のクエ...
-
Accessの構成をコピーしたい
-
SQLサーバに対するSQL文で抽出...
-
SQLで、Join句で結合したテ...
-
結合したテーブルをSUMしたい
-
SQLのテーブルにないデータの出力
-
PRIMARY KEYのコピー
-
ExcelのMatch関数のようなもの...
-
ExcelのVLOOKUP関数の動作をMyS...
-
2つのテーブルをLIKE演算子のよ...
-
パススルークエリ&ACCESSテーブ...
-
ACCESSのVBAにてExcelに行...
-
複数のテーブルからデータを取...
-
在庫管理のデータベース
-
ADO+ODBCでテーブルに接続する...
-
テーブルデータの上書きをした...
-
SELECT INTOで一度に複数の変数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
テーブル名が可変の場合のクエ...
-
SQLで、Join句で結合したテ...
-
既存データをINSERT文にして出...
-
結合したテーブルをSUMしたい
-
2つのテーブルをLIKE演算子のよ...
-
データ無し時は空白行にしたい...
-
Accessの構成をコピーしたい
-
PRIMARY KEYのコピー
-
SQLサーバに対するSQL文で抽出...
-
ExcelのMatch関数のようなもの...
-
同一テーブル内での比較(最新...
-
副問合せを使わずにUNIONと同様...
-
複数のテーブルからデータを取...
-
ADO+ODBCでテーブルに接続する...
-
Excelでしりとりを作る方法
-
ACCESS クエリーでソートの不具合
-
パススルークエリ&ACCESSテーブ...
-
三科目合計点のクラス別平均点...
-
ExcelのVLOOKUP関数の動作をMyS...
おすすめ情報