みなさま、こんにちは。
ACCESSのFORMにボタンを作って、イベントのビルドでCSVファイルを読み込んで、編集して指定したEXCELシートに貼り付けようとVBAを組んでいるのですが、困ってしまいました。
データを一気に読み込んだあと、2次元の配列にして
aRecord(r, a)にレコードと項目ごとに値をセットしています。
データを編集後、
ES(b).Cells(posR, posC) = aRecord(r, a)
でエクセルのセルに値を入れているのですが、この方法だとEXCELを更新することが
できなくて困っています。
ACCESS/EXCEL連携で、ACCESSからEXCELシートを更新できるコマンドがあると聞いたことがあるのですが、具体的にどのようなコマンドを
どのように使えばよいのか、ご存知ないでしょうか?
もしおわかりになる方がいらっしゃいましたら、是非ご教授下さいますよう
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
これは私が実際に、AccessからExcelを起動して書き込みに成功しているものです。
いろいろと問題があるプロシージャかもしれませんが、とりあえず出来ました。(汗笑)
Excel起動の際、既に起動済であっても新しくインスタンスを生成してしまっています。(2重起動)
行頭のタブが無理やり消されて見難いですが、参考になればよいのですが・・・
'*
'*Form_売上入力票
'*
Private Sub コマンド19_Click()
Dim cnn As New ADODB.Connection
Dim rstCustomer As New ADODB.Recordset
Dim rstDetails As New ADODB.Recordset
Dim strDetailsSQL As String
Dim strCustomerSQL As String
Dim strAbsPath As String
Dim intRsCount As Integer
Dim intPageCount As Integer
Dim i As Integer
Dim j As Integer
If OpenExcel() Is Nothing Then
MsgBox "OpenExcel failed."
Exit Sub
Else
gxLApp.Visible = True
End If
strAbsPath = Trim(Me.Application.CurrentProject.Path) & "\denpyo.xls"
If OpenExcelFile(strAbsPath) Then
'
Else
MsgBox "OpenExcelFile failed."
Call CloseExcel
Set cnn = Nothing
Set rstCustomer = Nothing
Set rstDetails = Nothing
Exit Sub
End If
strCustomerSQL = "SELECT ...(中略);"
strDetailsSQL = "SELECT ...(中略);"
Set cnn = CurrentProject.Connection
rstCustomer.CursorLocation = adUseClient
rstCustomer.Open strCustomerSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText
rstDetails.CursorLocation = adUseClient
rstDetails.Open strDetailsSQL, cnn, adOpenStatic, adLockReadOnly, adCmdText
intRsCount = CInt(rstDetails.RecordCount)
intPageCount = Int(intRsCount / 5) + 1
Debug.Print "intRsCount = " & intRsCount
Call CopyPages(intPage:=intPageCount)
rstDetails.MoveFirst
For i = 1 To intPageCount
Call InsertCustomer(intPage:=i, intTotalPage:=intPageCount, rsData:=rstCustomer)
For j = 1 To 5
If rstDetails.EOF Then Exit For
Call InsertDetails(intPage:=i, intRow:=j, rsData:=rstDetails)
rstDetails.MoveNext
Next
Next
MsgBox "O.K.?"
Call CloseExcel
Set cnn = Nothing
Set rstDetails = Nothing
Set rstCustomer = Nothing
End Sub
'*
'*BasExcelAutomation
'*
Public gxLApp As Object
Public gfExcelWasRunning As Boolean
Public Function OpenExcel() As Object
'
' Excelを起動する(インスタンスを生成)
'
Set gxLApp = CreateObject("Excel.Application")
If gxLApp Is Nothing Then
MsgBox "MS Excel 9.0 is not installed on your computer"
Set OpenExcel = Nothing
Exit Function
End If
Set OpenExcel = gxLApp
End Function
Public Function CloseExcel()
'
' Excelを終了させる
'
' On Error Resume Next
If Not gxLApp Is Nothing Then
With gxLApp
.ActiveWorkbook.Close False
.Quit
End With
Set gxLApp = Nothing
End If
End Function
Public Function OpenExcelFile(strFileName As String) As Boolean
On Error Resume Next
gxLApp.Workbooks.Open Filename:=strFileName
OpenExcelFile = (Err.Number = 0)
If Not OpenExcelFile Then
MsgBox strFileName & "を開けませんでした。" & _
vbCrLf & "Err = " & Err.Number & _
vbCrLf & "FileName = " & strFileName
End If
End Function
No.2
- 回答日時:
“EXCELは値が書き込まれないまま、処理が終了する”とのことですが、普通は“値が入った状態でEXCELを画面に表示して処理が終了”されるはずなのですが・・・
その点が問題なのではないでしょうか? 代入しようとしているデータが特殊なものやNullになってはいないでしょうか?
marsahさん、ご回答をありがとうございます。
EXCELのマクロで動かした場合はちゃんといくのですが、ACCESSから起動すると
EXCELのワークシートが一瞬だけ画面に現れて、すぐに消えてACEESSの画面に
戻ってしまうんですよ・・・
うーむ。一体どうすればよいのやら・・・。
No.1
- 回答日時:
はじめまして。
質問中の「更新」と言う意味がいまいち良くわかりませんでした。「更新」とは、
(1)画面の更新をさせたい?
(2)セルにいれたあとのExcelシートを保存したい。
(3)その他の意味。
この点について、もうすこし、噛み砕いて説明頂ければ、回答できると思い、
投稿させて頂きました。
この回答への補足
dayan_dayanさん、レスをいただいてありがとうございます。
わかりにくい質問ですみませんでした。
ACCESSでEXCELのシートに値を書き込みたいのですが、
現在書いているコード
cells(a,b)=ほにょほにょ
の書き方ではEXCELは値が書き込まれないまま、処理が終了してしまいます。
せめて値が入った状態でEXCELを画面に表示して処理が終了すば、その後
EXCEL側でシートを保存すればよいのですが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) csvファイルをExcel形式で読み込むには 2 2023/07/03 13:09
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Excel(エクセル) Excel マクロの編集がグレーになって 編集ができなくなりました 2 2023/04/28 20:35
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
首吊りどこ締めるの
-
変な話しになります。尿検査で...
-
白血球が多いとどんな心配があ...
-
今朝、毎朝の習慣でオナニーし...
-
1日前の検尿
-
射精をして1週間以内に尿検査を...
-
検便についてです。 便は取れた...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
男です。昨日の午後3時くらいに...
-
EXCELで式からグラフを描くには?
-
彼女のことが好きすぎて彼女の...
-
中出しをするとお腹が痛い・・・。
-
値が入っているときだけ計算結...
-
これって喉仏ですか? 私は女性...
-
EXCELの条件付き書式で数式を空...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
中出しをするとお腹が痛い・・・。
-
麻疹風疹の抗体検査結果につい...
-
エクセルでエラーが出て困って...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
至急!尿検査前日にオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
精子が黄色?
-
小数点以下を繰り上げたものを...
-
値が入っているときだけ計算結...
-
口の中に黒い血の塊
-
健否~書類の書き方~
-
甲状腺が腫れているが血液検査...
-
はしかの抗体検査は何科の病院...
-
テスターで断線を調べる方法教...
おすすめ情報