Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9765 / 13644 ツリー ←次へ | 前へ→

【25559】特定のブックのリストを抽出して、他ブッ... Yukky 05/6/4(土) 22:45 質問[未読]
【25561】Re:特定のブックのリストを抽出して、他ブ... ponpon 05/6/4(土) 23:00 発言[未読]
【25563】Re:特定のブックのリストを抽出して、他ブ... Yukky 05/6/5(日) 1:38 質問[未読]
【25565】Re:特定のブックのリストを抽出して、他... ponpon 05/6/5(日) 11:55 発言[未読]
【25566】Re:特定のブックのリストを抽出して、他... Yukky 05/6/5(日) 13:08 質問[未読]
【25567】Re:特定のブックのリストを抽出して、他... ponpon 05/6/5(日) 13:30 発言[未読]
【25569】Re:特定のブックのリストを抽出して、他... Yukky 05/6/5(日) 13:43 質問[未読]
【25570】Re:特定のブックのリストを抽出して、他... ponpon 05/6/5(日) 14:48 発言[未読]
【25571】Re:特定のブックのリストを抽出して、他... Yukky 05/6/5(日) 15:22 お礼[未読]
【25573】Re:特定のブックのリストを抽出して、他... ponpon 05/6/5(日) 19:18 発言[未読]

【25559】特定のブックのリストを抽出して、他ブッ...
質問  Yukky  - 05/6/4(土) 22:45 -

引用なし
パスワード
   はじめまして。
エクセル2000です。

ブックAのリストから特定の文字列で検索・抽出し、一致したリストを
ブックBに表示させたいのですが、
マクロをブックBに書いたとき、どのようにブックAを操作したらよいのでしょう?

【25561】Re:特定のブックのリストを抽出して、他...
発言  ponpon  - 05/6/4(土) 23:00 -

引用なし
パスワード
   こんばんは。
まずbookBから bookAを開きます。
bookAで、
>Aのリストから特定の文字列で検索・抽出し、一致したリスト
を取得(コピー)し、
bookBのsheetに貼り付けます。
提示の条件では、これぐらいしかアドバイスできません。
もう少し詳しくbookAのSheetのレイアウトを提示し、どのような条件で
検索抽出するのか。BookBのSheetにどのように転記するのか提示し、
どこまでコードができていてどの部分がわからないのか質問すると
回答がもらえると思います。

【25563】Re:特定のブックのリストを抽出して、他...
質問  Yukky  - 05/6/5(日) 1:38 -

引用なし
パスワード
   ponpon さん 早速のレスありがとうございます。

現在、コード自体はできていないのですが
bookAのリスト全体をbookBの構造体もしくは配列に格納したいと思っているのですが
bookBからbookAのリストをマクロでどのように取得するかで躓いています。

【25565】Re:特定のブックのリストを抽出して、他...
発言  ponpon  - 05/6/5(日) 11:55 -

引用なし
パスワード
   こんにちは。

>bookBからbookAのリストをマクロでどのように取得するかで躓いています。

とはいっても、
検索、一致したリストをでしょう?
だから、、オートフィルターやフィルターオプションを使うにしても、
FindやApplication.Matchを使うにしても、bookAのシートのレイアウトがわからないと
検索、抽出ができないと思うのですが、
そこの部分はできているのでしょうか。

>bookAのリスト全体をbookBの構造体もしくは配列に格納したいと思っているのですが。

配列に格納する部分がわからないのかな??

変数を宣言して
セルがばらばらなら
myArray = Array(セルA1の値,セルD1の値,セルE1の値・・・・)

連続したセルなら
myArray = Range("A1:D5").Value やループさせて格納する等

>構造体
なんかもっと難しいことをしようとしているのかな?
それなら、初心者の私では無理だな・・・常連さんの登場を待ちましょう。

【25566】Re:特定のブックのリストを抽出して、他...
質問  Yukky  - 05/6/5(日) 13:08 -

引用なし
パスワード
   おはようございます。

説明不足ですいません。

検索・抽出に関しては、配列に格納後に条件を指定してbook2に表示する事で
クリアできました。

わからないのが、book2からどのようにしてbook1のデータ(他のファイル)を
参照するかです。 参照方法がわかれば、loop等を利用して配列に
放り込みます。

【25567】Re:特定のブックのリストを抽出して、他...
発言  ponpon  - 05/6/5(日) 13:30 -

引用なし
パスワード
   こんにちは。
こういうことですか?

With Range("A1")
  .Value = "='C:\文書\[A.xls]Sheet1'!A1"
  .Value = .Value
End With     

【25569】Re:特定のブックのリストを抽出して、他...
質問  Yukky  - 05/6/5(日) 13:43 -

引用なし
パスワード
   こんにちは。

>こういうことですか?
>
>With Range("A1")
>  .Value = "='C:\文書\[A.xls]Sheet1'!A1"
>  .Value = .Value
>End With     

はい。ありがとうございます。
しかし、上記の参照方法で
A1からZ1000まで取得するにはどのようにするのでしょう?

【25570】Re:特定のブックのリストを抽出して、他...
発言  ponpon  - 05/6/5(日) 14:48 -

引用なし
パスワード
   こんにちは。
>しかし、上記の参照方法で
>A1からZ1000まで取得するにはどのようにするのでしょう?
以下でできるとは思いますが・・時間がかかりすぎて役に立たないと思います。

Sub test()
 Dim i As Long
 Dim j As Long

For i = 1 To 1000
 For j = 1 To 26
 
  With Cells(i, j)
   .FormulaR1C1 = "='C:\文書\[A.xls]Sheet1'!R" & i & "C" & j
   .Value = .Value
  End With
 Next
Next

End Sub


普通にA.xlsを開いてsheet1のA1からZ1000をコピー貼り付けて、
A.xlsを閉じた方がよいと思いますが。
開いていないように見せることもできますし。

今一仕様がよくわからないのですが、

1,BbookからAbookを開く
2,Abookから必要なデータを検索・抽出し、配列に入れる。または、
  コピーする。
3,Bbookに貼り付ける。または、配列を使って必要な処理をする。

ではいけないのでしょうか?

【25571】Re:特定のブックのリストを抽出して、他...
お礼  Yukky  - 05/6/5(日) 15:22 -

引用なし
パスワード
   ありがとうございます。

>Sub test()
> Dim i As Long
> Dim j As Long
>
>For i = 1 To 1000
> For j = 1 To 26
> 
>  With Cells(i, j)
>   .FormulaR1C1 = "='C:\文書\[A.xls]Sheet1'!R" & i & "C" & j
>   .Value = .Value
>  End With
> Next
>Next
>
>End Sub
>
FormulaR1C1を使えばよかったのですね。

>
>今一仕様がよくわからないのですが、
>
>1,BbookからAbookを開く
>2,Abookから必要なデータを検索・抽出し、配列に入れる。または、
>  コピーする。
>3,Bbookに貼り付ける。または、配列を使って必要な処理をする。
>
>ではいけないのでしょうか?

常にAbookは更新されているのでその都度貼り付けるのが
面倒だと思ったんです。。。

>普通にA.xlsを開いてsheet1のA1からZ1000をコピー貼り付けて、
>A.xlsを閉じた方がよいと思いますが。
>開いていないように見せることもできますし。

↑ちょっと興味深々です。

結果として、うまく期待通りの物ができました。
少し処理時間がきになりましたが ^^;
本当にありがとうございました。

【25573】Re:特定のブックのリストを抽出して、他...
発言  ponpon  - 05/6/5(日) 19:18 -

引用なし
パスワード
   こんばんは。
同じことが以下のコードでできると思いますが。
B.xlsの標準モジュールコピペしてください。

Sub test1()
  Dim FName As String
  Dim myWB As Workbook
  
  FName = "C:\文書\A.xls"
  Set myWB = ThisWorkbook
  Application.ScreenUpdating = False
   Workbooks.Open FileName:=FName
   ActiveWorkbook.Worksheets("sheet1").Range("A1:Z1000").Copy _
   myWB.Worksheets("sheet1").Range("A1")
   Workbooks("A.xls").Close
  Application.ScreenUpdating = True

End Sub

9765 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free