過去ログ

                                Page     871
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼ファイルを開かずにデータを抽出  ch 03/3/12(水) 18:20
   ┣Re:ファイルを開かずにデータを抽出  Jaka 03/3/13(木) 12:14
   ┗Re:ファイルを開かずにデータを抽出  ポンタ 03/3/13(木) 12:46
      ┗Re:ファイルを開かずにデータを抽出  Kein 03/3/14(金) 0:37

 ───────────────────────────────────────
 ■題名 : ファイルを開かずにデータを抽出
 ■名前 : ch
 ■日付 : 03/3/12(水) 18:20
 -------------------------------------------------------------------------
   はじめまして、よろしくお願いします。

CSVファイルを開かずにデータを抽出する方法は
拝見させていただきましたが、XLSファイルにつ
いて何か方法はありませんでしょうか。

ご指導をよろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:ファイルを開かずにデータを抽出  ■名前 : Jaka  ■日付 : 03/3/13(木) 12:14  -------------------------------------------------------------------------
   こんにちは。
V3の過去ログがなくなっかったんで、取り合えず抜擢。
Application.ExecuteExcel4Macroを使った書き方例です。
これだけどと良く解らないと思いますが...。

Private Sub UserForm_Initialize()
  Dim listmenu() As String, jj As Long, i As Long
  jj = 58 - 9
  ReDim listmenu(1 To jj)
  For i = 9 To 58
    listmenu(i - 8) = Application.ExecuteExcel4Macro("'" & ThisWorkbook.Path & "\[aaa.xls]Sheet1'!" & "r" & i & "c5")
  Next
  ComboBox1.List = listmenu
  ComboBox1.ListIndex = 0
End Sub
 ───────────────────────────────────────  ■題名 : Re:ファイルを開かずにデータを抽出  ■名前 : ポンタ  ■日付 : 03/3/13(木) 12:46  -------------------------------------------------------------------------
   DAO(Data Access Object)を使ってもできるんじゃないでしょうか?

私はやったことないので、具体的なことは分かりませんが。
(役に立たないレスでゴメンナサイ)
 ───────────────────────────────────────  ■題名 : Re:ファイルを開かずにデータを抽出  ■名前 : Kein  ■日付 : 03/3/14(金) 0:37  -------------------------------------------------------------------------
   DAOなら・・

Sub DAO_Test()
  Dim DB As Database, RS As Recordset
  Dim FName As String
  Dim MyData As Variant

  FName = "C:\Program Files\Microsoft Office\Office\MyFiles\Book2.xls"
  Set DB = OpenDatabase(FName, False, False, "Excel 8.0;HDR=NO;")
  Set RS = DB.OpenRecordset("Sheet2$")
  With RS
    '.MoveFirst
    .Move 2
    MyData = .Fields(1)
  End With
  Range("A1").Value = MyData
  RS.Close: DB.Close
  Set RS = Nothing: Set DB = Nothing
End Sub

で、アクティブシートのA1にBook2.xlsのSheet2のB3の値を、引っ張れると思います。
Move 行番号 - 1 と、Filelds(列番号 - 1) の指定で、任意のセル位置に移動
出来ます。もし1行目のみなら .MoveFirst を使い、.Move は不要になりますが、
例えば A1:C5 の範囲を、そのままアクティブシートに持ってくるなら

Dim i As Long, j As Long と変数宣言を追加し、With RS の中でループします↓

With RS
  For i = 0 To 4
   For j = 0 To 2
     .Move i
     MyData = .Fields(j)
     Cells(i + 1, j + 1).Value = MyData
   Next j
  Next i
End With

ただし、DAOを使えるのは「あくまでデータベース形式になっている表」だけ、と
考えて下さい。タイトル行がなければ、失敗する可能性が大きいです。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 871