Page 15 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼エクセルのVBAをAccessで実行する方法 素人 02/9/5(木) 9:21 ┣コピーじゃ無理です(^^; yu-ji 02/9/5(木) 9:50 ┃ ┗AccessからExcelVBAを起動 yu-ji 02/9/5(木) 9:55 ┃ ┗Re:AccessからExcelVBAを起動 素人 02/9/5(木) 13:56 ┃ ┗Re:AccessからExcelVBAを起動 yu-ji 02/9/5(木) 14:41 ┃ ┗Re:AccessからExcelVBAを起動 素人 02/9/5(木) 18:26 ┃ ┗Re:AccessからExcelVBAを起動 素人 02/9/5(木) 19:11 ┗Re:エクセルのVBAをAccessで実行する方法 こうちゃん 02/9/5(木) 9:52 ┗駄レスです。 yu-ji 02/9/5(木) 9:57 ┗(^^;) T/O こうちゃん 02/9/5(木) 13:27 ─────────────────────────────────────── ■題名 : エクセルのVBAをAccessで実行する方法 ■名前 : 素人 ■日付 : 02/9/5(木) 9:21 -------------------------------------------------------------------------
エクセルのVBAをAccessで実行する方法をご存知の方がいらっしいましたらご教授お願いします。 エクセルのVBAから下記のコードをそのままAccessVBAにコピ−して実行しましたがエラ−となりました。 よろしくお願いします。 Option Explicit ' 'VF05 - List Billing DocumentsでMaterial number毎に集めたbillingDocument 'リストをひとつのファイルに集約する。 Sub BillingCollectionVF05() Application.ScreenUpdating = False Workbooks.Open Filename:= _ "C:\Documents and Settings\TAKAGI\My Documents\Billing\200207\BillDocDatabase.xls" Dim Ifile As String, Ipath As String, CC% Ipath = "C:\Documents and Settings\TAKAGI\My Documents\Billing" 'パス名指定 ' Ifile = Dir(Ipath & "\*") Do Until Ifile = "" CC% = CC% + 1 Workbooks.Open Ipath & "\" & Ifile Dim FirstRow, Lastrow As String FirstRow = Range("B65536").End(xlUp).End(xlUp).Address Lastrow = Range("B65536").End(xlUp).Offset(, 27).Address Range(FirstRow & ":" & Lastrow).Copy Windows("BillDocDatabase.xls").Activate Range("A65536").End(xlUp).Offset(1, 0).Select ActiveSheet.Paste Application.CutCopyMode = False Windows(Ifile).Close False Ifile = Dir '引き続き検索 Loop Workbooks.OpenText Filename:= _ "C:\Documents and Settings\TAKAGI\My Documents\Billing\200207\Contract", _ StartRow:=8, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _ Array(3, 1), Array(4, 1)) Dim PareRow As String PareRow = Range("B1").End(xlDown).Offset(-1, 0).Row Rows(PareRow).Delete Columns("A").Delete Columns("D").Delete Application.ScreenUpdating = True End Sub |
▼素人 さん: >エクセルのVBAをAccessで実行する方法をご存知の方がいらっしいましたら >ご教授お願いします。 > >エクセルのVBAから下記のコードをそのままAccessVBAにコピ−して実行 >しましたがエラ−となりました。 そりゃー、無理ってもんです(笑) ExcelとAccessは、また全然別のもんなので、当然VBAも別物です。 #同じVBAということで、共通する点は多いと思いますが。 可能なら、まずはAccessVBAを勉強する前に、Access自体を勉強した方が いいのではないかと思います(^^; ちなみに、やりたいことというのは、AccessでExcelファイルのVBAを起動 したいということでしょうか? それなら、やり方がありますが、流石に、このコードを見ても、何がしたいか 分からないので(^^;;; |
▼yu-ji さん: >ちなみに、やりたいことというのは、AccessでExcelファイルのVBAを起動 >したいということでしょうか? ちなみに、↑がしたいことなら、以下のようなコードを記述すれば Excelファイルを開いてマクロを実行できます。 Function test() Dim XlApl As Object Dim XlFile As Object Set XlApl = CreateObject("excel.application") Set XlFile = XlApl.workbooks.Open("VBAが書いてあるExcelファイル") XlFile.Application.Run "BillingCollectionVF05" (略) End Function |
▼yu-ji さん,こんにちわ 下記コ-ドで試してみたところ、”1004:マクロBillingCollectionVF05が見つかりません”となりました。 よろしくお願いします。 >>ちなみに、やりたいことというのは、AccessでExcelファイルのVBAを起動 >>したいということでしょうか? > >ちなみに、↑がしたいことなら、以下のようなコードを記述すれば >Excelファイルを開いてマクロを実行できます。 > >Function test() > > Dim XlApl As Object > Dim XlFile As Object > > Set XlApl = CreateObject("excel.application") > Set XlFile = XlApl.workbooks.Open("VBAが書いてあるExcelファイル") > XlFile.Application.Run "BillingCollectionVF05" > > (略) > >End Function |
▼素人 さん: >▼yu-ji さん,こんにちわ > >下記コ-ドで試してみたところ、”1004:マクロBillingCollectionVF05が >見つかりません”となりました。 なぜでしょうか(^^; Subで宣言してますよね? 関数名とか変えてないですよね? んーと、まずはOpenとRunの間にVisibleを入れて、デバッグモードで1行ずつ 実行させて、ちゃんとExcelファイルが開かれているか確認してみてもらえますか? その後、Runの行を実行させる前に、Excelファイルの【ツール】-【マクロ】-【マクロ】 で、ちゃんと"BillingCollectionVF05"が表示されているか確認してみてください。 表示されていれば、それでマクロの実行を手動で行い、マクロの実行ができましたか? >> Set XlFile = XlApl.workbooks.Open("VBAが書いてあるExcelファイル") XlFile.Application.Visible = True >> XlFile.Application.Run "BillingCollectionVF05" |
まず、Functionを標準モジュ-ルでやりましたが、”コンパイルエラ−:名前が適切ではありません”と表示されました。 >>下記コ-ドで試してみたところ、”1004:マクロBillingCollectionVF05が >>見つかりません”となりました。 > >なぜでしょうか(^^; > >Subで宣言してますよね? >関数名とか変えてないですよね? > >んーと、まずはOpenとRunの間にVisibleを入れて、デバッグモードで1行ずつ >実行させて、ちゃんとExcelファイルが開かれているか確認してみてもらえますか? >その後、Runの行を実行させる前に、Excelファイルの【ツール】-【マクロ】-【マクロ】 >で、ちゃんと"BillingCollectionVF05"が表示されているか確認してみてください。 >表示されていれば、それでマクロの実行を手動で行い、マクロの実行ができましたか? > >>> Set XlFile = XlApl.workbooks.Open("VBAが書いてあるExcelファイル") >XlFile.Application.Visible = True >>> XlFile.Application.Run "BillingCollectionVF05" |
こうちゃんさん、YU=JIさんこんばんわ。 おかげさまで解決しました。 ありがとうございました。 ファイル名が全く同じエクセルファイルが違うDirectoryに複数あったため、違うファイルを開いていたことが判明しました。 大変お騒がせいたしました。 |
素人 さん、こんにちは >エクセルのVBAをAccessで実行する方法をご存知の方がいらっしいましたらご教授お願いします。 > >エクセルのVBAから下記のコードをそのままAccessVBAにコピ−して実行しましたがエラ−となりました。 そのままでは実行できません^^; エクセルをオブジェクトとして開いて実行する必要があります。 この話題は質問箱V3 http://www21.tok2.com/home/vbalab/ でも出ていましたので、V3のAccess質問箱で、"EXCEL" で検索してみてください。 そこを見た上で、不明点はまた質問してくださいね(^^) |
他のコメントの発言時間から、ひょっとしてこのレスを書いているのかな? と思ったんですが、やっぱりかぶりましたね(笑) |
[本文なし] |