[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ファイルの参照』(naoyan)
お世話になります。
エクセルでデータ処理をしているのですが、下記事項で悩んでいますのでご指導ください。
例えば、Book1.xlsファイルのA1セルにBook2.xls、A2セルにBook2.xlsのあるフォルダのパスとを入力してマクロを実行すると
Book2.xlsのB4セルからF4セルまでの数値をもってきて、Book1.xlsのA3からA7までに貼り付けるようなマクロはどのようにすれば良いですか。
初心者の為、マクロの記録でやったものをいじってみようとしているのですが、Book2.xlsの
あるフォルダの指定及びBook2.xlsの指定方法がわかりません。
どうぞ宜しくお願い致します。
こうですか? シートの\ /の所を右クリックして→コードの表示で出た画面に↓をコピペ 仕様としてA1セルに目的のBookまでのパス A2にブック名でブック名が変更されたらマクロが動きます。 (力技)
Private Sub Worksheet_Change(ByVal Target As Range) Dim myFol As String, myXls As String If Target.Address <> "$A$2" Then Exit Sub myFol = Range("A1") & "\" myXls = Range("A2") Workbooks.Open myFol & myXls End Sub
関数を埋めれば開かなくてもできますよ? (seiya)
投稿の際にはHNを記入してください。
='C:test\[Book2.xls]sheet1'!B4 等とすれば開いてなくてもリンクできますよね? これを、VBAで書いてやればよいのです。 または,ExecuteExcel4Macroでも抽出できますよ? (seiya)
>コンパイルエラーでEnd Subが必要です ↑は多分 Sub test() ・ ・ Private Sub Worksheet_Change(ByVal Target As Range) ・ ・ End Sub End Sub
になってませんか? Sub test() に使うなら
Dim myFol As String, myXls As String If Target.Address <> "$A$2" Then Exit Sub myFol = Range("A1") & "\" myXls = Range("A2") Workbooks.Open myFol & myXls
中身のだけをコピペすれば使えますよ。 (力技)
Workbooks.OpenText Filename:= _ "C:\横山\データ\MAN_0001.RND", StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _ Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)) Range("G13:L13").Copy Windows("グラフ.xls").Activate Range("B13").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("MAN_0001.RND").Activate Range("Y13:AN13").Copy Windows("グラフ.xls").Activate Range("B26").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("MAN_0001.RND").Close End Sub
これの "C:\横山\データ\MAN_0001.RND" の部分で
C:\横山\データをA2セルに、MAN_0001.RNDをA1セルに入力してマクロを実行すると
うえの作業が実行されるようにしたいのですが。
どのように変更すれば良いのですか?
宜しくお願い致します。
filename:=Range("a2").Text & Range("a1").Text に変更すればいいんじゃないの? でも、これ本来の質問と全然関係ないんじゃないの? (seiya)
:
:
Windows("MAN_0001.RND").Activate Range("Y13:AN13").Copy Windows("グラフ.xls").Activate Range("B26").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("MAN_0001.RND").Close
の("MAN_0001.RND")の部分が反映されない為、半分しか処理できません。
この部分はどのように訂正すればよいのでしょうか。
本来の質問からはずれていましが、ご教授ください。
Activate/Select はしない。
Workbooks("MAN_001.RND").Sheets("シート名").Range("Y13:AN13").Copy Workbooks("グラフ.xls").Sheets("シート名").Range("b26").PasteSpecial Paste:=xlPasteValues, Transpose:=True
では? (seiya)
Workbooks.OpenText Filename:= _ Range("B4").Text & "\" & Range("B2").Text, StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _ Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)) Range("G13:L13").Copy Windows("周波数分析グラフ.xls").Activate Range("B13").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("MAN_0001.RND").Activate Range("Y13:AN13").Copy Windows("周波数分析グラフ.xls").Activate Range("B26").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Windows("MAN_0001.RND").Close End Sub
(naoyan)
それじゃ変数で参照させればよいでしょう。
Dim wb As Workbook Set wb = Workbooks.OpenText FileName:=.......... として wb.Sheets("シート名").Range("範囲").Copy ThisWorkbook.Sheets("シート名").Range("範囲").PasteSpecial .... では? (seiya)
その部分を Workbooks("周波数分析グラフ.xls").Sheets("Sheet1").Range("b2").Value に変えたいのですか?
セルの値の取得はできますか? Workbooks("ブック名").Sheets("シート名").Range("範囲名").Value もしくは .Text (seiya)
MAN_001.RND は WorkBook.OpenText で開きますよね? Workbooks.OpenText FileName:=......の部分に希望する値を代入するわけですね? Set wb = Workbooks.OpenText FileName:=.... で 変数 wb はWorkbooks("MAN_001.RND")を参照するようになるのですが? お分かりになりますか? (seiya)
Dim wb As Workbook ←ここを変更 Set wb = Workbooks.OpenText FileName:= _ ←ここを変更 Range("B4").Text & "\" & Range("B2").Text, StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _ Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)) Range("G13:L13").Copy Windows("周波数分析グラフ.xls").Activate Range("B13").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True wb.Sheets("sheet1").Range("Y13:AN13").Copy ←ここを変更 Windows("周波数分析グラフ.xls").Activate Range("B26").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True wb.Close ←ここを変更 End Sub ということでしょうか? 上記で実行したところFilenameでコンパイルエラーとなります。 ご丁寧な説明を、理解できなく申し訳ありません。 (naoyan)
Dim wb As Workbook With Workbook("周波数分析グラフ.xls").Sheets("Sheet1") Set wb = workbooks.OpenText Filename:=.Range("b4").Text & .Range("b2").Text,.... ...... ....... wb.Sheets("sheet1").Range("G13:L13").Copy .Sheets("sheet1").Range("b26").PasteSpecial Paste:=xlValues, Transpose:=True wb.Close End With
こんな感じでしょうか? 各"Sheet1"は適当ですので変更してください。 (seiya)
Sub データ読込() ' ' データ読込 Macro : のSubは何か違う物に変えるのでしょうか。 度々恐縮です。 (naoyan)
Sub データ読込()
'
' データ読込 Macro
' マクロ記録日 : 2007/4/12 '
'
Dim wb As Workbook With Workbook("周波数分析グラフ.xls").Sheets("Sheet1") Set wb = workbooks.OpenText Filename:=.Range("b4").Text & .Range("b2").Text, StartRow:=1 _ , DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True, _ Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1)) Range("G13:L13").Copy Windows("周波数分析グラフ.xls").Activate Range("B13").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True wb.Sheets("sheet1").Range("Y13:AN13").Copy .Sheets("sheet1").Range("b26").PasteSpecial Paste:=xlValues, Transpose:=True wb.Close End With End Sub
(naoyan)
HN変えて、新たにスレ立てるのは感心しませんね... 他の方が回答してくれるでしょう. (seiya)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.