• ベストアンサー
  • すぐに回答を!

ExecuteExcel4Macroを使ったレコードの読み込み方法につ

  • 質問No.5922706
  • 閲覧数2194
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 66% (14/21)

ExecuteExcel4Macroを使ったレコードの読み込み方法について

下記サンプルは、ファイルを指定して、指定したファイルの中にあるシートを選択し、その中にあるデータを読込むものになっています。

読込ませるファイルのsheet1には、『 ID,顧客番号,氏名,住所,電話番号 』 が入っています。

下記サンプルでは、顧客番号フィールドのデータは読込めるのですが、該当するレコード全体を読込むにはどう組み立てればいいかよくわかりません。

すみませんが、どなたかご教授いただけませんでしょうか。よろしくお願いいたします。



Public Sub testes()

' 変数の指定
Dim OpenFileName, SheetName, Target, buf As String
Dim i, TargetCol As Long, GetNames()

' 対象ブックの選択
OpenFileName = Application.GetOpenFilename("Microsoft Excel ブック,*.xls")
If OpenFileName = "False" Then Exit Sub

' ファイル名に[]を付ける
OpenFileName = Replace(OpenFileName, Dir(OpenFileName), "[" & Dir(OpenFileName) & "]")

' 対象ワークシート名の指定と取得
SheetName = InputBox("対象ワークシート名を入力します")
If SheetName = "" Then Exit Sub
Target = "'" & OpenFileName & SheetName & "'!"

' ワークシートの正誤チェック
On Error Resume Next
buf = ExecuteExcel4Macro(Target & "R1C1")
If Err <> 0 Then
MsgBox "ワークシート [ " & SheetName & " ] を読めませんので終了します。", vbExclamation
Exit Sub
End If
On Error GoTo 0

' [顧客番号]フィールドを探す
For i = 1 To 256
If ExecuteExcel4Macro(Target & "R1C" & i) = "顧客番号" Then
TargetCol = i
Exit For
End If
Next i

If TargetCol = 0 Then
MsgBox "[顧客番号]フィールドが確認できません。", vbExclamation
Exit Sub
End If


' データの読み込み
For i = 1 To 10000

buf = ExecuteExcel4Macro(Target & "R" & i)
If buf = "0" Then Exit For

' シートに出力する
Worksheets("sheet3").Activate
ActiveSheet.Cells(i, 1) = buf

Next i

End Sub

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 71% (339/472)

回答する前に。。。

前回のお礼に書いてあったことは解決しましたか?
解決したのなら、締めましょう。
それがマナーです。
 

読み込む表は、1行目1列(A1)から始まっているものと仮定し
シート3への転記もA1からにする

例によって回答は、必要部分のみ。
'-------------------------------------
' データの読み込み

 Dim Clm As Integer

 For i = 1 To 10000
  buf = ExecuteExcel4Macro(Target & "R" & i & "C" & TargetCol)
  If buf = "0" Then Exit For

' シートに出力する
  For Clm = 1 To 5
   Worksheets("sheet3").Cells(i, Clm) = ExecuteExcel4Macro(Target & "R" & i & "C" & Clm)
  Next Clm
Next i
'-----------------------------------------

●読み込むシートの表開始位置が違うなら
 TargetColを利用して適宜変更のこと。

以上です。
 
お礼コメント
asheh

お礼率 66% (14/21)

ありがとうございました。

意図通りに動作するようになりました。

ファイルを開いて対象のシートをコピーするよりも、ファイルを開かずにデータを読み込ませるほうがスマートかと思ってましたが、レコード数が多くなると読み込みにも時間がかかってしまうんですね。

やはり、ファイルを開いて対象のシートをコピーするのが望ましいのでしょうか・・・。

ありがとうございました。
投稿日時:2010/05/26 19:34
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ