すみません、知恵をお貸しください。

VBA初心者です。
一つの同じフォルダ内にあるエクセルの同じ形式の複数ファイル(*.xls)から、データを抽出し(例.A2:k2)一つのファイルを作成したいのですが、どうにか一行目だけを抽出することができました。

しかし、データ抽出をしたい複数ファイルの中には(A2:k2)だけではなく、複数行に渡りデータが入っているもの(A3:k3まで、やA5:k5までなど)があり、それら全てを抽出したいのです。

何らかの条件付けの上でループをさせればいいのかな?とも考えたのですが、うまくいきません。

どうかご教授お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

    • good
    • 0
この回答へのお礼

ありがとうございます☆
すごく参考になりました^^

お礼日時:2009/05/19 14:26

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q復元ポイントの作成とイメージファイル等のバックアップとの違いについて

今晩は、宜しくお願いします。

復元ポイントの作成とイメージファイル等のバックアップとの違いについて教えて下さい。

Windowsで復元ポイントからシステムを復元させる方法があり、
また、イメージファイル等にバックアップをとり、復元させる方法もありますが
この両者はどのように違うのでしょうか。

復元ポイントの作成とは、その時点のシステムの設定等だけを保存しているという
ことでしょうか。

また、イメージファイル等のバックアップを作成するということは
システム設定と作成したファイル等もイメージファイルとして一括してバックアップ
されるのでしょうか。

イメージファイルの復元時に、作成したファイル等もイメージファイルから
復元されるのなら、同じ名前のファイルがあった場合には、
イメージファイル作成時の古い情報のファイルになってしまうのでしょうか。

以上、宜しくお願いします。

Aベストアンサー

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。修復されるのは、選択した項目により異なる。
WindowsREを利用。
https://msdn.microsoft.com/ja-jp/library/hh825173.aspx

【バックアップと復元】
システムのバックアップを作成し、ハードディスクなどが壊れた場合に備えパソコン内部のデータを全てバックアップ・復元出来る。
Windowsのインストールディスクや、システム修復ディスクから復元が可能。
システムもユーザーデータもバックアップを取った時点の状態に戻る。

【システムの復元】
Windowsが使用するシステムファイルのバックアップと復元。
ユーザーファイルには影響しない。
HDDの中に作成されるので、Windowsが起動しない環境では使用出来ない。

【システム修復ディスクの作成】
Windowsの起動時にF8を押下して起動するセーフモードから「コンピューターの修復」「システム回復オプション」を、外部記憶装置(CD、USBメモリなど)から起動出来るようにする。
Windows自体が起動しなくなった場合に、外部記憶装置から「システム回復オプション」が起動出来るようになる。...続きを読む

Q1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある

1フォルダに「A.xls」、「B.xls」、「C.xls」・・・とある場合、
すべてのファイルに一斉にA1セルに「a」という文字を反映させる場合の
VBAプログラムを教えていただけますでしょうか?
よろしくお願いいたします。

Aベストアンサー

フォルダ名を変更してから試してね
4行目の
mPath = "C:\tmp\"
「aaa」なら
mPath = "C:\aaa\"
に変更


Sub test()
Dim mPath As String
Dim nf As String
mPath = "C:\tmp\"
nf = Dir(mPath & ".xls")
Do While nf <> ""
Workbooks.Open Filename:=mPath & nf
Workbooks(nf).ActiveSheet.Range("a1").Value = "a"
Workbooks(nf).Close SaveChanges:=False
nf = Dir()
Loop
End Sub

簡単なコードにしてあるので、分らない所はヘルプで調べてね
参考まで

Q救出ファイル復元 2の機能について

「救出ファイル復元 2」で画像ファイルJPEGの他にRAWファイル、拡張子(CR2)を復元出来るでしょうか。

キャノンの一眼デジカメを使っているのですが、他の復元ソフトでは、復元出来ませんでした。

Aベストアンサー

Vectorあたりで『ディスク・ファイル復旧』の項目で探せばみつかりそうですが。
要は,"復元ソフトで復元できるファイルがソフトに登録されている拡張子だけしかできない"ことですので,拡張子を選択できる復元ソフトを捜せばいいと思われます。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/disk/care/

Q複数のデータテーブルのデータをdistinctの抽出したい

VB.NETで、A・B・Cのデータテーブルがあるとします。
3つのデータテーブルに存在する同一のデータを抜き出したいのですが、何かよい方法はありますか?

Aベストアンサー

 VB.NETじゃなくてSQLの話でしょうか? それともDataSetの話でしょうか。

 SQL文であれば・・・・UNION ALLを使うとどうなりますかね。例えばDBMSがSQL Server 2000で、A.IDとB.IDとC.IDが全部int型(同じであれば何型でも良いけど)とすると、

select distinct ID from A
union all
select ID from B
union
select ID from C

これだとDBMSによって結果が変わりそうなので、ひょっとしたら次(DISTICT+サブクエリ)の方が良いのかも知れません。

select distinct * from (
 select ID from A
 union all
 select ID from B
 union
 select ID from C
)

 まぁこれにしても結局はDBMS依存ですが。この2つ両方とも実行計画を見てみるのも良いかと。

Q削除した画像ファイルの取り出しまたは復元方法

ごみ箱に入れてから削除したファイルの復元方法を教えてください。

以前にも同様の質問をしたのですが、その際に教えていただいた方法で確かにいくつかのファイルは復元することができました。

しかし、一番復元したい画像ファイル(jpeg形式)が復元できません、同時期に同じく削除したファイルは無事に取り出せたのですが肝心のファイルは取り出せません。指定するファイル名、フォルダ名などの間違いはないのですが何が原因で復元できないのか理解できません。

良きアドバイスをいただければ助かります。
宜しくお願いいたします。

Aベストアンサー

こういったファイル復元ソフトを利用してファイルを復活させます。

●FileRecovery(フリーウェア)

消去・欠損したファイルを復元するソフト。
http://www.pcinspector.de/download.htm

●復元(フリーウェア)
http://www.vector.co.jp/soft/win95/util/se192983.html

■FINALDATA(ファイナルデータ)フォトリカバリー3.0(有料)
http://www.finaldata.ne.jp/f_8_3.html

当然ながら復元できる確立は有料ソフトのほうが高いです。

これらを使っても復元できない場合はファイルが上書きされて完全に消えている可能性が高いです。

Q複数ブックから一つのシートにデータを転記する際に順序をつける方法

都道府県ごとのブックにバラけたトマトの作付面積のデータを、一つのシートにまとめようと試みています。
転記元のブックは「1北海道」、「2青森」・・・「47沖縄」という順番で単一フォルダ内に並んでおります。
このフォルダ内の順番の通りにシートに転記したいのですが、
以下のマクロ(あるサイト様から拝借しました)を用いて転記すると順番がめちゃくちゃになってしまいます。
何か改善策はないものでしょうか?お詳しい方、どうぞよろしくお願い申し上げます。



転記に用いたマクロ



Sub ブックの転記()
Dim myDir As String, myName As String, myBook As Workbook
Dim motodata As Range, sakidata As Range

Dim 転記先 As Worksheet, 転記元 As Worksheet

Set 転記先 = ThisWorkbook.ActiveSheet

Application.ScreenUpdating = False

'集計用のブックがあるフォルダ名を指定
myDir = "C:\Users\Desktop\野菜データ"
myName = Dir(myDir & "\" & "*.xls")

Do While myName <> ""
'↓転記先の最新レコード位置を取得する
Set sakidata = 転記先.Range("XFD2").End(xlToLeft).Offset(0, 1)
'↓(1)指定した名前のブックを開いて変数に格納する
Set myBook = Workbooks.Open(Filename:=myDir & "\" & myName)
'↓(2)転記元を取得する。

Set 転記元 = myBook.ActiveSheet

Set motodata = 転記元.Range("A8:A47")
'↓(3)転記先に貼り付ける
motodata.Copy sakidata
'↓(4)開いたブックを閉じる
myBook.Close

myName = Dir()

Loop
End Sub


以上

都道府県ごとのブックにバラけたトマトの作付面積のデータを、一つのシートにまとめようと試みています。
転記元のブックは「1北海道」、「2青森」・・・「47沖縄」という順番で単一フォルダ内に並んでおります。
このフォルダ内の順番の通りにシートに転記したいのですが、
以下のマクロ(あるサイト様から拝借しました)を用いて転記すると順番がめちゃくちゃになってしまいます。
何か改善策はないものでしょうか?お詳しい方、どうぞよろしくお願い申し上げます。



転記に用いたマクロ



Sub...続きを読む

Aベストアンサー

とりあえず、今のソースをそのまま使用したい場合は、ファイル名を以下のように変えて下さい。
1北海道.xls -> 01北海道.xls
2青森.xls -> 02青森.xls
・・・途中省略
9XX.xls -> 09XX.xls

上記のように、1~9を01~09に変えてください。
その後、今のマクロを実行してください。

もし、上記の名前の変更を手作業で毎回するのがいやな場合は、以下のようなバッチファイル
を作ってください。(ファイル名をchange.batとします)
------------------------------------
rename 1北海道.xls 01北海道.xls
rename 2青森.xls 02青森.xls
・・・途中省略
rename 9XX.xls 09XX.xls
------------------------------------
このファイルをexcelファイルがあるフォルダにおきます。
コマンドプロンプトを呼び出し、このフォルダに移動します。
そこで、change.batと入力するとファイル名が変更されます。

もし、ファイル名を変更せずに行ないたい場合は、以下のようにします。
新しいシートを作成し、A列に都道府県毎のファイル名を記入します。
A1->1北海道
A2->2青森
・・途中省略
A47->47沖縄

このA1~A47までのセルの内容に拡張子(.xls)を付加してファイルを読み込むようにします。
このやり方を望まれる場合は、その旨補足してください。

とりあえず、今のソースをそのまま使用したい場合は、ファイル名を以下のように変えて下さい。
1北海道.xls -> 01北海道.xls
2青森.xls -> 02青森.xls
・・・途中省略
9XX.xls -> 09XX.xls

上記のように、1~9を01~09に変えてください。
その後、今のマクロを実行してください。

もし、上記の名前の変更を手作業で毎回するのがいやな場合は、以下のようなバッチファイル
を作ってください。(ファイル名をchange.batとします)
------------------------------------
rename 1北海道.xls 01北海道.xls
re...続きを読む

Q「ウイルス感染ファイル」削除後のシステム復元でどうなる?

ウイルスバスターで幾つかのウイルス感染ファイル発見し全て削除しましたが、感染したファイルはシステムファイルでしたので少し心配でしたが削除しました。
そこで教えて頂きたいのですが、感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?

Aベストアンサー

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライブにOSのインストールディスクを入れておく。
2.「スタート」「コマンドプロンプト」または「ファイル名を指定して実行」で
「sfc /scannow」と入力して「OK」

「Windows XP professional のディスクを入れてください」という表示が出ることがありますがHome Editionであれば「無視」を選んでスキップしてください

>感染した日付以前でシステムの復元をする事によって削除されたシステムファイルは復元できるのでしょうか?
出来ないことはないでしょうが、あまりお勧めできません。
現在の状態が正常でない。
過去の状態の方が快適に操作できる。
という場合、それがいいかもしれません。
しかし、Windowsの設定というのは非常に広範囲にわたっており、現在と過去を比較して、どちらが適正かを判断するのは容易ではありません。
また、過去の復元ポイントの中には不正な設定が含まれている場合があり、間違って、そのポイントを選択することもあります。
ウィルス対策ソフトのサイトでは一旦復元設定を無効にして、過去の復元ポイントを全て消去することを推奨しています。

>一度削除されたシステムファイルはシステムの復元をしても二度と復元しないのでしょうか?
間違った操作をすると汚染されたファイルが復元されてしまいます。
一旦復元設定を無効にして、過去の復元ポイントを全て消去することで汚染されたファイルは二度と復元しません。

以下WindowsXPという前提で・・・

>システムファイルでしたので少し心配でしたが削除しました。
通常、このままではシステムエラーが発生します。
しかし、Windowsには自動復旧機能があり、削除されたファイルをハードディスク上にあるCabファイルから呼び出して復旧させるようになっています。
従って、殆どの場合、削除されたシステムファイルを手動でインストールする必要はありません。

☆SFCの実行
もしシステムエラーが出る場合SFC(System File Checker)の実行をお勧めします。

1.CDドライ...続きを読む

Qデータベースから複数の条件を指定して抽出するには

VB初心者です。よろしくお願いします。
今、座席予約システムを作っています。その際、複数の条件を指定して、その条件に合うIDを抽出しようとしていますが、うまくいきません。具体的には、テーブル:[T-映画]の中にある、フィールド:[映画名]とフィールド:[時間帯]がそれぞれ一致したときに、同じテーブルにあるフィールド[映画ID]のデータを抽出するという処理です。
コードは次の通りです。
Private Sub Command1_Click()
Dim db As ADODB.Connection
Dim rst3 As ADODB.Recordset
Set db = New ADODB.Connection
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source =データベースへのパス\zaseki.mdb"
db.Open
Set rst3 = New ADODB.Recordset
rst3.Open "[T_映画]", db, adOpenKeyset, adLockReadOnly
With rst3
.Filter = "映画名= ' " & Module1.mojiB & " ' "
☆☆ If .RecordCount = 0 Then
MsgBox "その映画は登録されていません"
Else
rst3.Filter = "時間帯 =' " & Module1.mojiC & " ' "
If rst3.RecordCount = 0 Then
MsgBox "その映画は登録されていません"
Else
Module1.eigaID = rst3.Fields("映画ID")
End If
End If
End With
rst3.Close
db.Close
Set db = Nothing
Set rst3 = Nothing
End Sub

☆☆の部分で映画名があるにも関わらずカウントしてくれません。
変数Module1.mojiB には、String型の映画名が
Module1.mojiC には、String型の時間帯がそれぞれ入っています。
フィールド[映画名]、[時間帯]の型はテキスト型です。
よろしくお願いします。

VB初心者です。よろしくお願いします。
今、座席予約システムを作っています。その際、複数の条件を指定して、その条件に合うIDを抽出しようとしていますが、うまくいきません。具体的には、テーブル:[T-映画]の中にある、フィールド:[映画名]とフィールド:[時間帯]がそれぞれ一致したときに、同じテーブルにあるフィールド[映画ID]のデータを抽出するという処理です。
コードは次の通りです。
Private Sub Command1_Click()
Dim db As ADODB.Connection
Dim rst3 As ADODB.Recordset
Se...続きを読む

Aベストアンサー

ID   映画名    時間帯
1   ローマの休日  10-12
2   ローマの休日  13-15
3   エデンの東   10-12
4   エデンの東   13-15

? DBLookup("ID", "[T-映画]", "映画名='ローマの休日' AND 時間帯='13-15'")
2

Private Sub コマンド4_Click()
  Dim lngID As Long
  
  lngID = DBLookup("ID", "[T-映画]", "映画名='ローマの休日' AND 時間帯='13-15'")
  If lngID > 0 Then
    MsgBox "ID=" & ID
  Else
    MsgBox "Not found!"
  End If
End Sub

SELECT文を用いれば簡単かと思います。
バグの検証は、他の回答者の方に任せます。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
   Dim DataValue
   Dim strQuerySQL As String
   Dim rst     As ADODB.Recordset

   Set rst = New ADODB.Recordset
   strQuerySQL = "SELECT " & strField & " FROM " & strTable
   If Len(strWhere) > 0 Then
     strQuerySQL = strQuerySQL & " WHERE " & strWhere
   End If
   With rst
     .Open strQuerySQL, _
        CurrentProject.Connection, _
        adOpenStatic, _
        adLockReadOnly
     If Not .BOF Then
       .MoveFirst
       DataValue = .Fields(0)
     End If
   End With
Exit_DBLookup:
On Error Resume Next
   rst.Close
   Set rst = Nothing
   DBLookup = Nz(DataValue, ReturnValue)
   Exit Function
Err_DBLookup:
   MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
   Resume Exit_DBLookup
End Function

ID   映画名    時間帯
1   ローマの休日  10-12
2   ローマの休日  13-15
3   エデンの東   10-12
4   エデンの東   13-15

? DBLookup("ID", "[T-映画]", "映画名='ローマの休日' AND 時間帯='13-15'")
2

Private Sub コマンド4_Click()
  Dim lngID As Long
  
  lngID = DBLookup("ID", "[T-映画]", "映画名='ローマの休日' AND 時間帯='13-15'")
  If lngID > 0 Then
    MsgBox "ID=" & ID
  Else
    MsgBox "Not found!"
  End If
...続きを読む

Q復元ソフトのふと感じた疑問 -ファイル名を削除したい-

先日、復元ソフトを使用していたときに感じたことなのですが
(使用ソフトは「復元」です。)
ファイルを復元する際の手順で削除したファイルが検索できますよね。
このファイル検索の時に、HITしないようにファイル名を完全に削除したい場合はどのようにすればいいのでしょうか??

例えば、「●●との秘密旅行001.jpg」のファイルを削除したとします。
その後、復元ソフトで検索をかけるとファイルを復元しなくてもファイル名を見ただけで怪しいファイルとわかってしまいますよね。
復元ソフトの検索で、表示されなくする方法か、別名に変える方法があるのなら教えてください。

Aベストアンサー

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名前を消去したいファイルをクリックするか、名前を消去したい複数ファイルを左クリックしながら選択する→[消去]ボタンをクリック→[OK]をクリック

これで、名前を消せます。しかしながら完璧ではなくて、一部消せないこともあります。
(「DataRecovery」を再起動してもう一度ドライブをスキャンすると消せなかったファイルが表示されます)

参考URL:http://www.vector.co.jp/soft/win95/util/se382922.html

95159さんが求めていらっしゃるのは以下の方法ではないでしょうか。

フリーの復元ソフトに「DataRecovery」というものがあります。このフリーソフトには「削除したファイル」の名前を時間をかけず簡単に消去できる機能が付いています。

『DataRecovery』
http://www.vector.co.jp/soft/win95/util/se382922.html

■使い方
起動させる→該当ドライブをクリック→[スキャン]ボタンをクリック→削除したファイルの表示完了→「目的のファイルが見つかりましたか?」と出てきたら[キャンセル]をクリック→名...続きを読む

Q複数項目からのデータ抽出

 エクセルで部活動名簿を作っています。
この学校では、一人の生徒が複数の部活に所属しています。
シート1に下記のような名簿を作成しておいて

  A   B   C  D    E   F   G
______________________________
1 学年  氏名 性別 部活  部活  部活  部活
2  1  スズキ 男 バスケ       水泳
3  1 ヤマシタ 女       テニス 水泳
4  2  サトウ 女 バスケ            バレー
5  2  イトウ 男        テニス
6  3  タナカ 男 バスケ  テニス      バレー


シート2に、たとえば「2 男 バレー」(2は、2年生ということ)
と入力して、ボタンをクリックするとシート1の名簿から抽出されてシート2に表示されるようにしたいのです。

最初は複数抽出ではなく、バレー部ならバレー部、バスケ部ならバスケと抽出すればよかったので、マクロの記録を使って
フィルタオプションの設定で指定した範囲を選択
シート1でリスト範囲を指定し
検索条件範囲は、シート2に部活 バレー部と入力しそこのセルを指定
抽出範囲でシート2の表示したいセルを選択しました。
マクロの記録を終了してから、ビジュアルベーシックエディタで
少しいじって、その後フォームでボタンを作成し
そこにマクロを読み込ませて、そのボタンをクリックすると
シート2に表示されるようにしました。

 これで出来上がりと思ったら、依頼主からバレー部の中でも
学年でわけ、さらに性別で分けるようにしたいという要望があり
いろいろと試してみたのですがうまく行かず・・・
お手上げ状態です。
ちなみに、私はエクセルは詳しくないです。
前回の抽出も、ネットや図書館で借りてきた本で調べ調べやっと出来たものです。

 どうか、お力をお貸しください!よろしくお願いいたします。

 エクセルで部活動名簿を作っています。
この学校では、一人の生徒が複数の部活に所属しています。
シート1に下記のような名簿を作成しておいて

  A   B   C  D    E   F   G
______________________________
1 学年  氏名 性別 部活  部活  部活  部活
2  1  スズキ 男 バスケ       水泳
3  1 ヤマシタ 女       テニス 水泳
4  2  サトウ 女 バスケ            バレー
5  2  イトウ...続きを読む

Aベストアンサー

部活を 部活1 部活2 部活3 部活4 といった具合に変更します

条件となるセルに
学年 性別 部活1 部活2 部活3 部活4
 2  男 バレー
 2  男    バレー
 2  男       バレー
 2  男          バレー
といった具合に設定しておき

フィルターのオプションで抽出してみてください
1行の列にきじゅるされた条件がアンド(AND)
行方向に伸びる条件がオア(OR)
になります


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング