[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『fileを開かず値を取得する』(マクロン)
Excel VBAでご質問です。
BIGデータがあり開くだけでも時間がかかるために「Excel 4.0」
を使って書き込みをしたいです。
http://officetanaka.net/excel/vba/tips/tips28.htm
を参考に以下の構文を作成しました。
Sub Sample2()
Dim mb As Workbook Dim SH As Worksheet Dim wb2 As Workbook Dim myfdr As String Dim gName As String Dim i As Long
Set mb = ThisWorkbook Set SH = mb.ActiveSheet myfdr = ThisWorkbook.Path gName = Dir(myfdr & "\*あああ*.xls*") Set wb2 = myfdr & "\" & gName
' Set wb2 = Workbooks.Open(myfdr & "\" & gName)
For i = 1 To ws1.Range("A" & Rows.Count).End(xlUp).Row 'A列2行目 〜最終行まで順番に処理
'Cells(i, 1) = ExecuteExcel4Macro("'C:\test\[Book1.xls] Sheet1'!R" & i & "C1")
'Cells(i, 1) = ExecuteExcel4Macro("'ThisWorkbook.Path & \[Book1.xls]Sheet1'!R" & i & "C1"
Cells(i, 1) = ExecuteExcel4Macro("gName.[Book1.xls] Sheet1'!R" & i & "C1"
Next i
End Sub
やりたいことはBOOKを開かず 同じフォルダーの「あああ」のファイルから
データを転記したいです。 どなたか構文の訂正方法をご教示ねがいます。
< 使用 Excel:Excel2013、使用 OS:Windows8 >
https://excel-ubara.com/excelvba5/EXCELVBA242.html
この辺も参考に。。。
https://books.google.co.jp/books?id=hFXtCgAAQBAJ&printsec=frontcover&hl=ja#v=onepage&q&f=false
↑の16P〜20P当り
あぁ、すでに田中さんのところを参考にしているのですね。。。
>やりたいことはBOOKを開かず 同じフォルダーの「あああ」のファイルから
ん?どのシートのどのセルの話ですか?
個人的にはブックを開かずにというのは有り得無くて、
開いたように見えてないだけかなと思ってます。(勘違いかも)
ファイルが一つでセルが100個とかだと開いた方が速そうですね。
(まっつわん) 2018/04/17(火) 16:29
「あああ」のファイル
データ量は 250,000KB 400,000行です
そのなかの、使用したいのは6列だけです。
A1からXX6までタイトル行。使用いたい列の中にも多数の結合があります。
取り出したデータは新規に同じフォルダーに名前付けて保存。
リンクでaccessに取り込み使用したいです。
(マクロン) 2018/04/17(火) 16:48
で、マクロはExcel側に書くのですか?
Access側から好きなように取り込めそうな気がしないでもないですが、
(同じオフィス製品なので連携の方法がありそう?)
ちょっとアクセスは解らないですが、
>A1からXX6までタイトル行。使用いたい列の中にも多数の結合があります。
結合っていうのはセルの結合のことですか?
それ、やめた方がいいと思います。
多分開いて整形しなおしてからアクセスに渡した方がよいかと。。。
あとは他の方の書き込みをお待ちください。
(まっつわん) 2018/04/17(火) 16:57
結合がある、とは、セル結合している部分があるのでしょうか? セル結合の無い、余分な列は削除した、素直な別ブック別シートを用意し、手作業でもマクロでも良いのでそこにデータをコピー。 それをDBサーバなりAccessなりの機能を使ってインポートさせましょう。
それと、ExecuteExcel4Macroを1行毎に呼び出すのは、止めた方が良いと思います。 ブックを開かなくとも、命令内ではファイルを開いたり、読み飛ばしたりしますから。 試す気にはなりませんが、普通にマクロでブックを開いてコピーする方が速いように思いますよ。(1セルだけ抜き出す、とかなら有効な方法ですが、40万回抜き出すなんて、無茶…)
どうしてもExecuteExcel4Macro案を捨てられないならば、元コードのままの1セル抜き出しでも良いので、それを1000回くらいループさせて(できれば後ろの行から)、処理時間を測定してみると良いでしょう。 得られた時間を400倍して、それが耐えられる時間かどうかで決められるかと思います。
(???) 2018/04/17(火) 17:54
(マクロン) 2018/04/17(火) 19:56
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.