• ベストアンサー

エクセルVBAについての質問です。

エクセルVBAについての質問です。まったくの初心者です。 閉じたままの他のブックBのSheet1 C7セルからデータを取得して作業中のブックA Sheet1 H7セルに記入したいのです。 どうかご指導お願いいたします。 まったくの初心者で、本やネットを漁っているのですが、何日かかってもできません。センスないんだと思いますが、あきらめきれずの質問です。アドバイスいただけると幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

ごく簡単に実現できる方法の一つとしては sub macro1() worksheets("Sheet1").range("H7").formula = "'c:\ブックの保存場所\[BookB.xls]Sheet1'!C7" end sub これだって、あなたのブックBが具体的にどこに保存してあって、拡張子はどーなっててとか、あなたの実際に合わせて修正しなきゃならないのは判りますね。 また次のステップとしては sub macro1()  with worksheets("Sheet1").range("H7")   .formula = "'c:\ブックの保存場所\[BookB.xls]Sheet1'!C7"   .value = .value  end with end sub といった細工になります。 >本やネットを漁っている ネットを漁ってみると、たとえば http://officetanaka.net/excel/vba/tips/tips28.htm といった方法がすぐにヒットします。 >センスないんだと思いますが、あきらめきれずの質問です。 まずお手本の「全くその通り」を実際に手を動かしてやってみて、確かにその通りに出来ることを確認します。 次に、そこから一つずつ次のご自分のヤリタイ事に近づけて、一歩一歩マクロを改良していきます。 >まったくの初心者で、本やネットを漁っている そもそもで言えば、間違った方向を目指してるだけです。ごく基本の概念として、マクロ単独では「閉じたブックから値を引っ張ってくる方法はそもそもありません」というのが出発点になります。 #ネットとか漁っても、「できる」事は書いてあっても「できない事」とかイチイチ書いてあったりしませんからね。(エクセルにできない事、口笛を吹くとか。イチイチ書いてたらキリがありません)

rin19_4621
質問者

お礼

お忙しい中早々のご回答ありがとうございます。はい、、ご指摘のとおりです。お恥ずかしいです。いただいたコードやタナカさんのページで、実際に組みなおして再度チャレンジしてみます。とても的確なご指導をありがとうございます。

その他の回答 (1)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.1

何を、どう、どのように調べたのかわかりませんが、 ・Bを開く ・転記する ・Bを閉じる と言う常道から始めてみませんか。 これなら少し調べれば出来ますよ。

rin19_4621
質問者

お礼

お忙しい中、早々にご指導ありがとうございます。質問の仕方から失敗でした。。失礼しました。おっしゃるとおり、頭からきれいなコードを目指してしまっていたので、自分で理解しながら進めていきたいと思います。ありがとうございます。

関連するQ&A

  • エクセルVBAの質問です。

    エクセルVBAの質問です。 一つ一つコードを試しては動きを確認するという作業を始めたばかりの初心者です。 VBAで他のブックからデータを取得するにあたっては、その参照先のブックの行列は絶対いじってはならないものだと理解しています。でも、行列が変わってしまう可能性があるため、参照先のブックの値を、行列ではなく、たとえば「“4月”かつ“売上”の交わるセルから数値を取得せよ」のように、参照先のブック内の文字列を読みにいって、そこから取得するような考え方は成り立つでしょうか。もし成り立つ場合は、どのように組めるものなのか、考え方を教えていただけませんでしょうか。 何卒よろしくおねがいいたします。

  • ExcelのVBAで質問が3つあります・・・

    こんばんわ。VBA初心者です。 会社で必要を迫られているのですが、どうしてもわからないので教えてください。 質問1   30枚ほどのSheetに、同じ作業をします。   まず最初の1枚目に自動初期でマクロを組みました。   そのマクロを、「Next Sheet」など使用し、   同じ作業をさせるには? 質問2   Sheet1 Sheet2 Sheet3 Sheet4・・・・・とたくさんのSheetがある場合   Sheet4以降の全てのSheetを削除させるには? 質問3   セル上の数字を取得して、行幅を設定するには? 以上、3つの質問です。 いっぺんに質問してしまい、すみません。 本やサイトを見て回ったのですが、どうしてもわからなくて・・・ 1つでもかまわないので、どうかご教授ください。 よろしくお願いいたします。  

  • エクセル内でのVBAの質問です。

    閲覧ありがとうございます。 エクセルの作業ファイルにてVBAのコードを作成しているのですが、中々思う通りに実行できないので、ご教授願います。 実行したい内容については以下の通りです。 ボタン1を押すと(添付画像上段のブック)、マイドキュメント内にある「データ転送ソフト2」という名前のブックを開き、そのブックのシート「A」内(添付画像下段)の、ボタン1を押したシートのF1セル(添付画像上段のブック)と同じ文字(日付)の列と"う"と入力された行の交差したセルの数値(添付画像下段の紫色のセル)をコピーして、ボタン1を押したシートのT4のセル(転送値1:の右隣にある薄緑のセル)に貼り付ける作業が行えるコードをご教授願いたいです。 要約しますと、作業しているシートのボタン1を押すと、別の場所にあるブックを開き、そのシート内の条件に沿った数値をコピーして、作業しているシートの指定されたセルに貼り付ける作業が行いたいです。 とても分かりにくい文章で申し訳ございませんが、お願いします。 可能ならば、コードの解説もつけてくださると嬉しいです。

  • エクセルのVBAを教えて下さい

    エクセルのVBAについて質問させて頂きます。 あるブックを、指定した20~30個のリストのタイトルをそれぞれにつけて20~30個複製し、さらにその複製したブックの指定したセルにタイトルと 同じ指定したリストの文字列を入れることは可能でしょうか。 説明が下手くそで申し訳ありません。 たとえば、Aというタイトルのブックを、 1から100のタイトルをそれぞれつけて100個複製し、 このブックのシート1のセルB1にブックのタイトルを入れるというような感じなのですが…(汗) どなたか知恵をお貸しいただけると幸いです。

  • Excel 2007 VBAについて質問します。

    Excel VBAの初心者です。 行の非表示と表示についてお聞きしたいのです。 ExcelのSheet1の1行目(1行全体)のみを、シート上のセルをWクリックをして 非表示にしたり表示させたりするのには、どの様なコードを書いたらいいでしょうか? VBA初心者の為、分かりやすい回答をお願いします。

  • Excel VBAのVLOOKUP関数について

    Excel VBAのVLOOKUP関数について VBAでのVLOOKUPで他のブックを使用する場合の方法がわかりません。 ブックαにて参照したい他のブックβのパスやファイル名、シート、セルは保持しております。 同一ファイル内では取得することができたのですが、他のブックではうまくいきません。 また、VLOOKUP関数にて取得できた場合、取得したセルの下に1段、左に1段目のセルを取得したい場合どうすればいいのでしょうか? 環境はEXCEL2003です。 ご存知の方がいれば教えてください!

  • Excel VBA について質問です。

    Excel VBA について質問です。 sheet1に、数字が入力され背景色がついたセルがあります。 sheet2に背景色ごとに1列に並び替えをしたいのですが、どのようにしたらよいでしょうか? まったくの初心者で、どうしたらよいのかわかりません。 よろしくお願いします。 1、sheet1の背景色は、指定されていないため何色か指定できない。 2、セルの範囲も都度違うため、指定できない。 3、sheet2には、色ごとに1列に並べるのみでよい。 上記の内容でご理解いただけるでしょうか? よろしくお願いします。

  • エクセルVBAについて

    今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。

  • EXCELのVBAで質問があります。

    EXCELのVBAで質問があります。 次の処理を実現しようと、  1.テンプレート的なファイルを用意する。  2.作業ファイルの作業シート(VBA組み込み有)を    初期化するために「1」のファイルからセルをコピーする    ※マクロがあるため、単純なシートコピーは出来ない 以下のようにコーディングしました。  objXls = CreateObject("Excel.Application")  objXlsWorkBook = objXls.Workbooks.Open("C:\Template.xls")  objXlsSheet = objXlsWorkBook.Sheets("テンプレートシート")  objXlsSheet.Range("1:10").Copy  ActiveWorkbook.Worksheets("作業シート").Range("1:10").PasteSpecial すると、コピーした内容がオブジェクト(図)として貼り付けられました。 どうすればオブジェクトではなく、セルとしてコピーが可能になるのでしょうか。 「Workbooks.Open("C:\Template.xls")」としてもいいのですが、 ファイルが見えてしまうのが都合が悪いのです。 どうかよろしくお願いします。

  • エクセルVBAで、任意指定のファイル名を取得する方法を

    教えて下さい。 ファイル(エクセルブック)を数個開いています。そのうち基本となるファイル(便宜上基本ファイルとします)は常に開いていて、後の数個の作業ファイルを開きます。(作業ファイルはその都度入れ替わり固定のファイルではありません)  基本ファイルを、アクティブな状態でエクセルVBAマクロを走らせます。 そのマクロ実行中に、『ある作業ファイルの任意のセル(任意のセル)をクリックして、そのファイル名とシート名とセルのアドレスとそのセルの値を取得』して、基本ファイルの任意のセル(例えば基本ファイルのsheet1のセルA2~D2に)に記入したいのです。 分かりにくい文で申し訳ないですが、特に上の『 』内の部分です。 どのようにマクロを記述すればいいのか分からないので、教えて下さい。宜しくお願いします。

専門家に質問してみよう