こんにちは。環境:WinNT4.0、エクセル97

二つのエクセルブックがあります。(AとB)
Aは個人のデータが記入されています。このAは個人個人のデータのため
実際には複数存在します。(A1、A2・・・)
Bはこの個々のブックを集計したものになるため、Bを直接開くことはありません。
実際にAのみにデータを追加していって、それをBに反映させることは
できるのでしょうか?

以上、お願いします。

A 回答 (3件)

VBAでイベントプロシージャーを使用して、AのデータシートをBの然るべきシートにコピーするようにすれば良いと思います。



Private Sub Workbook_BeforeClose()
Sheets("Aのデータ").Cells.Select
Selection.Copy
Workbooks.Open Tinename:="B.xls"
Sheets("Aデータ貼付先").Cells.Select
ActiveSheet.Paste
WorkBooks("B.xls").Close SaveChanges:=True
End Sub


動作確認していませんが、Excel97だと上記のような形となると思います。
    • good
    • 0
この回答へのお礼

上記のやりかただとBを開けなければならず、ちょっと違うんです。
Bを開けてやるなら上記でOKだと思います。

回答ありがとうございます。

お礼日時:2001/11/27 15:32

> ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。

ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。

私はこれが可能でしたよ。但し表示は、=[A]Sheet1!$A$1 でしたけど。
同じ環境:WinNT4.0、エクセル97 です

また、そのまま、=[A]Sheet1!$A$1というように打ち込んでもOKでした。

ちょっと謎です。
    • good
    • 0
この回答へのお礼

すいません、わかりました。
ウインドウ自体が複数になっていました。
2000とかだとファイルを開くごとにウインドウ(下のバー)が
増えていきますよね?
NT(エクセル97のほう?)の場合は、メニューバーのウインドウの中に
追加されていくだけなんですよね。
おっしゃっていた方法はこっちのやり方みたいですね。

確かにその方法でできました。
ありがとうございました。

お礼日時:2001/11/28 10:29

簡単にブックBのSheet1のA1に、ブックAのSheet1のA1を表示させる場合、ブックAとブックBを両方開き、ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。

ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。この後、A2以下からA10まで追加が予想されるとしたら、A1の計算式の行番号1の前の$を外し($A1の形)、A10までオートフィルを使ってコピーします。このあと先にブックAを閉じると計算式が'C\Winnt\Profiles\xxxxxx\デスクトップ\[A.xls]sheet1!A1'となるのを確認できると思います(ブックAがデスクトップに保存されているとした場合)。これでリンクは確立できたのでブックBを閉じ保存します。ブックAのA2以降にデータを追加した後保存し、ブックBを開けば確認できると思います。このときブックBを開く際、他にリンクされているうんぬんのメッセージが出るので、これを反映させる方を選択します。そうしないと意味がありません。あとブックAも新規に作成する場合は、必ずブックAから先に保存してください。
    • good
    • 0
この回答へのお礼

> ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。

それがなりませんでした。=を入力後、アクティブ画面をAに切り替えてA1セルを
選択して、Bに戻しても=以降なにも表示されません。シート間の場合はそれでいけるのですが、Book間だとうまくいきません。

回答ありがとうございます。

お礼日時:2001/11/27 15:26

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

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

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

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

QAmazonのブックカバー

すごく単純な質問なんですが、Amazon手本を買ったらブックカバーをつけてくれますか?どうやったらブックカバーが手に入りますか?教えてください。

Aベストアンサー

書籍を3900円以上買って、一緒に欲しい色のブックカバーをカート入れてキャンペーンコードを入力すれば無料で貰えます。

2006年6月30日までです。

参考URL:http://www.amazon.co.jp/exec/obidos/tg/detail/-/books/B0009WHOMG/reviews/ref=cm_rev_more/503-3484887-6739157#4

Qオブジェクト指向における「クラスA have a クラスB」の関係において,クラスBからクラスAのあるメンバ変数だけを触る方法

クラス10~50個の中規模プログラミングに当たって,以下の問題がよく出てきて,
「簡潔な方法はないものか・・・」と悩んでいます.

●前提条件
【・「クラスAに持たれているクラスB( A have a B 関係)において,
  クラスBからクラスAのあるメンバ変数(プロパティ)だけを触りたい」】

この場合,私はよく以下のようにしてしまい,クラス間の独立性を無くしてしまいます.
●方法1:
・クラスBのコンストラクタに「自分の持ち主であるクラスAのオブジェクト」を引数に取り,クラスBの変数(プロパティ)usedClassAとする.

=======
C言語風に書くと,
<code>
public void クラスA{
  クラスB usingClassB = new クラスB(); // 持っているクラスB
  int commonNum = 0;
  public void AddCommonNum(){
      commonNum++;
   }
   ...
   (その他の処理)
   ...
}

public void クラスB{
   class usedClassA;    // 持ち主のクラスA

   // コンストラクタ
   public クラスB(クラスA _usedClassA){
       usedClassA = _usedClassA;
   }
   public void AddCommonNum(){
       _usedClassA.AddCommonNum();
   }
}
<\code>
となります.

この方法の問題点は,クラスAとクラスBに<双方向の依存関係を作っている>ことで,
クラスAの設計(ここではAddCommonNum())が変更されたときに,クラスBの内容を変更しなければならない可能性があることから,拡張性に欠けると考えています.

そこで,他に何かいい実装方法が無いか,
教えていただけないでしょうか?
特に,このような前提条件に汎用的に使える方法だと尚良いです.

クラス10~50個の中規模プログラミングに当たって,以下の問題がよく出てきて,
「簡潔な方法はないものか・・・」と悩んでいます.

●前提条件
【・「クラスAに持たれているクラスB( A have a B 関係)において,
  クラスBからクラスAのあるメンバ変数(プロパティ)だけを触りたい」】

この場合,私はよく以下のようにしてしまい,クラス間の独立性を無くしてしまいます.
●方法1:
・クラスBのコンストラクタに「自分の持ち主であるクラスAのオブジェクト」を引数に取り,クラスBの変数(...続きを読む

Aベストアンサー

 こんにちは。
 簡単な話、共通のプロパティクラスを作成して、ClassAとClassBが其れを参照したり更新したりすれば、ClassAとClassBは左程依存しないのでは。
 一応C++で、其れらしき事をしてみましたので、参考程度に。

#pragma warning(disable : 4786)
#include<map>
#include<string>

//プロパティオブジェクトココから
struct IVariantHolder
{
  virtual ~IVariantHolder(){ }
};

template<class __TP>
struct CVariantHolder : public IVariantHolder
{
  typedef typename __TP variant;

  explicit CVariantHolder(const variant& val) : m_val(val){}
  ~CVariantHolder(){}

  variant& Get(){ return m_val; }
  const variant& Get() const { return m_val; }
  operator variant&(){ return m_val; }
  operator const variant&() const { return m_val; }
private:
  variant m_val;
};

struct CPropertyData
{
  typedef std::map<std::string, IVariantHolder*> map_t;
  template<class __TP>
  bool AddProperty(const __TP& tp, const std::string& sPropertyName)
  {
    if(GetProperty(sPropertyName))return false;
    return m_map.insert(std::make_pair(sPropertyName, new CVariantHolder<__TP>(tp))).second;
  }
  IVariantHolder* GetProperty(const std::string& sPropertyName)
  {
    return const_cast<IVariantHolder*>(
                static_cast<const CPropertyData&>(*this).GetProperty(sPropertyName)
                     );
  }
  const IVariantHolder* GetProperty(const std::string& sPropertyName) const
  {
    map_t::const_iterator it = m_map.find(sPropertyName);
    return it == m_map.end() ? 0 : it->second;
  }
private:
  map_t m_map;
};

template<class __TP>
static __TP* Lock(CPropertyData* property, const std::string& sPropertyName)
{
  CVariantHolder<__TP>* pVal = dynamic_cast<CVariantHolder<__TP>*>(property->GetProperty(sPropertyName));
  return pVal ? &pVal->Get() : 0;
}
//プロパティオブジェクトココまで

//テスト用の構造体
struct CommonStruct
{
  CommonStruct(long _l, short _s, char _c) : l(_l), s(_s), c(_c){}
  longl;
  shorts;
  charc;
};

//クラスAとクラスBココから
struct ClassB;
struct ClassA
{
  ClassA(ClassB* p, CPropertyData* property) : m_useClassB(p), m_property(property)
  {
    //ココでメンバ変数(プロパティ)の領域を動的に作成する
    m_property->AddProperty(int(0), "commonNum");
    m_property->AddProperty(CommonStruct(4, 2, 1), "commonStruct");
  }
  void DisplayProperty()
  {
    ::printf("%s %d %s\n", "[commonNum : ", *::Lock<int>(m_property, "commonNum"), "]");

    CommonStruct* p = ::Lock<CommonStruct>(m_property, "commonStruct");
    ::printf("%s <%d><%d><%d> %s\n", "[commonStruct <l><s><c> : ", p->l, p->s, p->c, "]");
  }
private:
  ClassB*m_useClassB;
  CPropertyData*m_property;
};

struct ClassB
{
  explicit ClassB(CPropertyData* property) : m_property(property){}
  void AddCommonNum()
  {
    int* pi = ::Lock<int>(m_property, "commonNum");
    (*pi)++;
  }
  void SetCommonStruct(long l, short s, char c)
  {
    CommonStruct* pc = ::Lock<CommonStruct>(m_property, "commonStruct");
    new (pc) CommonStruct(l, s, c);
  }
private:
  CPropertyData*m_property;
};
//クラスAとクラスBココまで

//お試し
int main()
{
  //両方に共通なプロパティオブジェクト
  CPropertyData property;

  //クラスBに渡す
  ClassB b(&property);

  //クラスAにクラスBとプロパティオブジェクトを渡す
  ClassA a(&b, &property);

  //クラスBでプロパティを操作する
  b.AddCommonNum();
  b.SetCommonStruct(10, 20, 30);

  //クラスAでプロパティを表示する
  a.DisplayProperty();
  return 0;
}

 こんにちは。
 簡単な話、共通のプロパティクラスを作成して、ClassAとClassBが其れを参照したり更新したりすれば、ClassAとClassBは左程依存しないのでは。
 一応C++で、其れらしき事をしてみましたので、参考程度に。

#pragma warning(disable : 4786)
#include<map>
#include<string>

//プロパティオブジェクトココから
struct IVariantHolder
{
  virtual ~IVariantHolder(){ }
};

template<class __TP>
struct CVariantHolder : public IVariantHolder
{
  typedef typename __T...続きを読む

Q担当者月別に1ブックにまとめたいのですが

フォルダ内に担当名が付いた日付エクセルブックが毎日送られてきます。
各ブック内シートは同名が一枚です。
月末にはかなりのブック数になり、処理が遅れると、月をまたぐブックも混在してきます。
日付は一緒でも担当者が違うため、同ブックは存在しません
このブックをに担当者月別に1ブックにまとめたいのですが、、

フォルダ内に、”yymmdd担当名”ブック
”090201担当A”ブック
”090201担当B”ブック
”090305担当C”ブック
”090301担当D”ブック
”090201担当A”ブック
”090415担当B”ブック
”090420担当C”ブック
”090401担当B”ブック

例えば
”0902担当A”ブック(シート090201担当A、090202担当A、090215担当A・・・) 担当Aの2月稼動
”0903担当A”ブック(シート090305担当A、090310担当A、090320担当A・・・) 担当Aの3月稼動
”0903担当B”ブック(シート090305担当B、090310担当B、090320担当B・・・) 担当Bの3月稼動

同フォルダ内でいいので、こんな感じでまとめることができれば。
月末処理でなくても、随時処理できるように上書きも可能にして、組み込んだブックは削除して
フォルダ内をすっきりさせたいのです。

以前、シート内からの月別ブック作成のマクロ模範回答があり、何とか応用してと格闘しましたが、
フォルダパスが絡んでくると、どうもよく解らなくなってきました TT
どなたかご指導願います

フォルダ内に担当名が付いた日付エクセルブックが毎日送られてきます。
各ブック内シートは同名が一枚です。
月末にはかなりのブック数になり、処理が遅れると、月をまたぐブックも混在してきます。
日付は一緒でも担当者が違うため、同ブックは存在しません
このブックをに担当者月別に1ブックにまとめたいのですが、、

フォルダ内に、”yymmdd担当名”ブック
”090201担当A”ブック
”090201担当B”ブック
”090305担当C”ブック
”090301担当D”ブック
”090201担当A”ブック
”090415担当B”ブック
”09...続きを読む

Aベストアンサー

やる作業とその方法が、本当に適切なのか会社内で検討するのが先のようにも感じます。

>処理が遅れると、月をまたぐブックも混在してきます。
これなんか同じフォルダに送り込むのがまずいので別フォルダに送るようにするか、
若しくは月末(月初め)に既にあるブックは別の場所へ移動させておく等でも、手間が少なくなるのでは。

あとは”毎日”送る必要があるのかどうか?
毎日集計する必要がなければ、各担当者が1ブックに1月分(または半月分)
まとめておいてそれから送ってくるとか、見直せる部分があるように思えます。

QバッチによるWinNT→UNIXのFTPの記述方法

WindowsからUNIXへファイルを転送したいため、
Windowsでmmm.batを作成したのですが、
以下の内容で、Win98→UNIXはOKだったのですが、
WinNT4.0(ws)→UNIXでは、上手くいきません。
どのようにすれば、よいのでしょうか?

mmm.batの内容
--------------------------------
ftp -n << d:\temp\nnn


d:\temp\nnnの内容
--------------------------------
open 123.234.345.456 <- IP address
user abc abc <- USER Password
lcd d:\temp\log <- Local Dir
cd /usr/bbb <- UNIX Server Dir
put aaa.txt
bye

WindowsからUNIXへファイルを転送したいため、
Windowsでmmm.batを作成したのですが、
以下の内容で、Win98→UNIXはOKだったのですが、
WinNT4.0(ws)→UNIXでは、上手くいきません。
どのようにすれば、よいのでしょうか?

mmm.batの内容
--------------------------------
ftp -n << d:\temp\nnn


d:\temp\nnnの内容
--------------------------------
open 123.234.345.456 <- IP address
user abc abc <- USER Password
lcd d:\temp\log ...続きを読む

Aベストアンサー

「<< の使い方が間違っています」とかのメッセージが出ませんでしたか?
「<<」ではなく「<」が正解です。
Win98 では << の機能がなく、<< を単に < と見なしてしまうので、正しく
実行できているように見えるだけです。
手元の Win98 と WinNT4.0 で確認しました。

Q【画像あり】複数のブック・シートから検索はできる?

タイトルの件、質問いたします。

下記の図【現状】のとおり、呼出ブック・Sheet1のB1セルに【NO】をハイフンを入れて
入力すると、名簿ブック・Sheet1の情報が、呼出ブックのB2、B3セルに【名前、趣味】
が呼出されます。

この名簿ブックの範囲を下記の図【やりたい事】とおり、広げる事はできますか?
具体的には、下記のとおりです。

【広げたい名簿ブックの範囲】→3つのブック、11のシート
●名簿ブック・Sheet1  名簿ブック・Sheet2  名簿ブック・Sheet3
 名簿ブック・Sheet4 名簿ブック・Sheet5
●名簿1ブック・Sheet1 名簿1ブック・Sheet2 名簿1ブック・Sheet3 
●名簿2ブック・Sheet1 名簿2ブック・Sheet2 名簿2ブック・Sheet3

【呼出ブック・Sheet1にある関数】
B2セル:=VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿.xls]Sheet1!A:C,2,FALSE)
B3セル:=VLOOKUP(SUBSTITUTE(B$1,"-",""),[名簿.xls]Sheet1!A:C,3,FALSE)

↑上記関数は、教えてgoo回答者様にご教授いただきました。


【条件】
●エクセルバージョン:2003
●名簿ブックは全て閉じているものとします。
●同じフォルダ内に全てあります。理想は、名簿ブックのみ、違うフォルダに格納したいです。
●名簿ブックにある、人の情報は全て、違う人です。

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

タイトルの件、質問いたします。

下記の図【現状】のとおり、呼出ブック・Sheet1のB1セルに【NO】をハイフンを入れて
入力すると、名簿ブック・Sheet1の情報が、呼出ブックのB2、B3セルに【名前、趣味】
が呼出されます。

この名簿ブックの範囲を下記の図【やりたい事】とおり、広げる事はできますか?
具体的には、下記のとおりです。

【広げたい名簿ブックの範囲】→3つのブック、11のシート
●名簿ブック・Sheet1  名簿ブック・Sheet2  名簿ブック・Sheet3
 名簿ブック・Sheet4 名簿ブック・Sheet5
●名...続きを読む

Aベストアンサー

その条件で,できますかという事なら次のように丁寧に作成していけば出来ます。(面倒なだけでムズカシイお話は何もありません)

=IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet1'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet1'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet2'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet2'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet3'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet3'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet4'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet4'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet5'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet5'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet1'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet1'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet2'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet2'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet3'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック1.xls]Sheet3'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet1'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet1'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet2'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet2'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet3'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック2.xls]Sheet3'!A:C,2,FALSE))

※保存先のドライブ名やフォルダなどの記述は正しく訂正して作成すること
この式を置いたブックは,別にどこに保管しておいても全く構いません。


こういったどうにもナンセンスな方法を取るしかないのは,データがバラバラとあっちこっち散らばっているからに他なりません。
仮に元データはそういう具合に散らかして運用するしかないのだとしても,それらから単純な参照式を並べて(オリジナルの表をコピーする→集めシートに形式を選んで貼り付けのリンク貼り付けでリンクの式を並べる→全部の表から行う)一枚のシートにえいやっと全てのデータを集めてしまえば,当初に成功していた
=VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿の全部.xls]Sheet1'!A:C,2,FALSE)
というだけの,シンプルな数式で完成できます。

その条件で,できますかという事なら次のように丁寧に作成していけば出来ます。(面倒なだけでムズカシイお話は何もありません)

=IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet1'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet1'!A:C,2,FALSE))
&IF(ISERROR(VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet2'!A:C,2,FALSE)),"",VLOOKUP(SUBSTITUTE(B$1,"-",""),'c:\フォルダ\[名簿ブック.xls]Sheet2'!A:C,2,FALS...続きを読む

QコマンドプロンプトでAフォルダをBのソフトにドラッグ

AフォルダをBのソフトで圧縮させたい場合、
コマンドプロンプトで操作可能でしょうか?

Bのソフトを細かく制御することは不可能だと思いますので、
AフォルダをBのソフトにドラッグすることと同じことを
コマンドプロンプトでできればいいと思っていますが。

Aベストアンサー

Drag&Drop で実行するのは「ファイル名を引数として実行する」のと同じじゃなかったかなぁ. だから (適切な設定のもとで)
B A
と打ち込めば実行できる, ような気がする.

QExcel2003 マクロでブックを開かずにコピペ

Excel2003でC:\にあるブックBを開かずに、
開いているブックAの指定したセルをコピーしたいのですがうまくいきません。

具体的なイメージは
開いているコピー先のブックA:いろは.xls
コピー先のシート:Sheet1
コピー元のブックB:らりるれろ.xls
コピー元のシート:らりるれろ
(ブックBの名前(らりるれろ.xls)とシート名が同じなのはシステム上の仕様です。)
ブックBのC6をブックAのC5に、
ブックBのI6をブックAのC6に、
ブックBのK6をブックAのC7に、
ブックBのH6をブックAのC8にコピーしたいと考えています。


宜しくお願いします!

Aベストアンサー

>Excel2003 マクロでブックを開かずにコピペ
根本的にマクロでは開いていないブックの参照が出来ません

一旦開いてコピー後に閉じるとの動作が必要

どうしても開くのがイヤダと言うのであれば

Range("C6").Select
ActiveCell.FormulaR1C1 = "='C:\[らりるれろ.xls]らりるれろ'!R5C3"


とすれば、開かずに参照できる

計算式でなく値がほしいのであれば


Range("C6").Select
ActiveCell.FormulaR1C1 = "='C:\[らりるれろ.xls]らりるれろ'!R5C3"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False


とでもすれば良い

>Excel2003 マクロでブックを開かずにコピペ
根本的にマクロでは開いていないブックの参照が出来ません

一旦開いてコピー後に閉じるとの動作が必要

どうしても開くのがイヤダと言うのであれば

Range("C6").Select
ActiveCell.FormulaR1C1 = "='C:\[らりるれろ.xls]らりるれろ'!R5C3"


とすれば、開かずに参照できる

計算式でなく値がほしいのであれば


Range("C6").Select
ActiveCell.FormulaR1C1 = "='C:\[らりるれろ.xls]らりるれろ'!R5C3"
Selection.Copy
Selection.PasteSpecia...続きを読む

Q■VBAマクロでワークブックAにワークブックBの集計をしたい。

■VBAマクロでワークブックAにワークブックBの集計をしたい。

ただし、ワークブックBは同じ番号で何個もあり、日付も並んでいません。
またワークブックAにあってBにない番号、また逆もあります。
それを日付が近いものから3つまで表示。


例)
ワークブックA (sheet1)
 番号 メモA1  メモA2 メモB1  メモB2 メモC1 メモC3
11111 2010/7/7  ccc 2010/5/5 ddd 2010/3/3 bbb
22222 2010/10/10 fff 2010/2/2 eee
35851 2010/12/12 ggg
54321

ワークブックB (sheet1)
番号  日付  メモ
11111 2009/1/1 aaa
11111 2010/3/3 bbb
11111 2010/7/7 ccc
11111 2010/5/5 ddd
22222 2010/2/2 eee
23568 2010/4/4 hhh
22222 2010/10/10 fff
35851 2010/12/12 ggg

※ワークブックAは最初項目と番号以外メモ部分は白紙です。例)は実行後の結果です。

質問で足りない部分ありましたら補足を入れますのでよろしくお願い致しますm(__)m

■VBAマクロでワークブックAにワークブックBの集計をしたい。

ただし、ワークブックBは同じ番号で何個もあり、日付も並んでいません。
またワークブックAにあってBにない番号、また逆もあります。
それを日付が近いものから3つまで表示。


例)
ワークブックA (sheet1)
 番号 メモA1  メモA2 メモB1  メモB2 メモC1 メモC3
11111 2010/7/7  ccc 2010/5/5 ddd 2010/3/3 bbb
22222 2010/10/10 fff 2010/2/2 eee
35851 2010/12/12 ggg
54321

ワークブックB (sheet1)
番号  日付  メモ
1...続きを読む

Aベストアンサー

ワークブックAのSheet1のシートモジュールに次のコードを書いてください。

Sub 集計()
Dim i As Integer
Dim j As Integer
Dim 番号 As String
Dim 日付 As Date
Dim メモ As String
For i = 2 To Workbooks("ワークブックB").Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
番号 = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 1).Value
日付 = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 2).Value
メモ = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 3).Value
For j = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(j, 1).Value = 番号 Then
If Cells(j, 2).Value < 日付 Then
Cells(j, 6).Value = Cells(j, 4).Value
Cells(j, 7).Value = Cells(j, 5).Value
Cells(j, 4).Value = Cells(j, 2).Value
Cells(j, 5).Value = Cells(j, 3).Value
Cells(j, 2).Value = 日付
Cells(j, 3).Value = メモ
ElseIf Cells(j, 4).Value < 日付 Then
Cells(j, 6).Value = Cells(j, 4).Value
Cells(j, 7).Value = Cells(j, 5).Value
Cells(j, 4).Value = 日付
Cells(j, 5).Value = メモ
ElseIf Cells(j, 6).Value < 日付 Then
Cells(j, 6).Value = 日付
Cells(j, 7).Value = メモ
End If
Exit For
End If
Next
Next
End Sub

ワークブックAのSheet1のシートモジュールに次のコードを書いてください。

Sub 集計()
Dim i As Integer
Dim j As Integer
Dim 番号 As String
Dim 日付 As Date
Dim メモ As String
For i = 2 To Workbooks("ワークブックB").Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row
番号 = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 1).Value
日付 = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 2).Value
メモ = Workbooks("ワークブックB").Sheets("Sheet1").Cells(i, 3).Value
...続きを読む

QEXCEL 別のブックにコピペしたときのセル参照

2つのエクセルブックがあります。

ブックA:sheet1、sheet2
ブックB:sheet1

ブックAのsheet2にはブックAのsheet1を参照した関数が沢山組んであります。
このsheet2をブックBにコピーしたいのですが、ブックBに新しいシートを作りコピペしても、
sheet2を右クリックで「移動またはコピー」にしてもブックBに移したsheet2はブックAを参照してしまいます。 
 =SUM([ブックA.xls]Sheet1!A3:A7) というように。

ブックAではなく、ブックBのsheet1を参照するように =SUM(Sheet1!A3:A7) となるようにコピペしたいのです。
1つ1つ関数の参照部を消すのも面倒なので、何か良い方法はありませんでしょうか

エクセル2003です。よろしくお願いします。

Aベストアンサー

次の手順を試してみてください。

1.とりあえず、ブックBを上書き保存して、開いたままにしておく
  (ブックAは閉じても構わない)
2.[編集]→[リンクの設定]を実行
3.[リンク元の変更]をクリック
4.ブックBを指定して[OK]をクリック
5.[閉じる]をクリック
6.上書き保存

ね、簡単でしょ?

Q複数の語句(a,b)を複数ファイルへ同時置換したい

あるフォルダに3つのファイルがあるとします。

「a」 という語句は、ファイル(1)の文中にある「言葉」という文字へ置換える。(言葉→aに置換)
「b」という語句は、ファイル(2)の文中にある「言葉」という文字へ置換える。(言葉→bに置換)
「c」という語句は、ファイル(3)の文中にある「言葉」という文字へ置換える。(言葉→cに置換)


この作業をフォルダに入ってるファイル全部へ一括で行いたいのですが、いいソフトはありますでしょうか?

置換対象の文字(「言葉」という文字)はすべてのファイル共通です。

イメージとしては、例えば以下のような登録ボックスがあったとして

登録1、「a」 → ファイル(1) 「言葉→aに変更」
登録2、「b」 → ファイル(2) 「言葉→bに変更」
登録3、「c」 → ファイル(3) 「言葉→cに変更」

という感じに、最初だけ「a」「b」「c」という語句を登録して、ファイルも(1)、(2)、(3)と登録しますが、
置換えするときは一括でワンクリックで全部置換えというようにしたいのですが良い方法はありますでしょうか?

ちなみにズブの素人なのでプログラミング関係は理解できませんでした。
サクラエディタとかマクロとか調べましたが途中で挫折です・・。

これができたら本当に助かります。どうかお願いします。

あるフォルダに3つのファイルがあるとします。

「a」 という語句は、ファイル(1)の文中にある「言葉」という文字へ置換える。(言葉→aに置換)
「b」という語句は、ファイル(2)の文中にある「言葉」という文字へ置換える。(言葉→bに置換)
「c」という語句は、ファイル(3)の文中にある「言葉」という文字へ置換える。(言葉→cに置換)


この作業をフォルダに入ってるファイル全部へ一括で行いたいのですが、いいソフトはありますでしょうか?

置換対象の文字(「言葉」という文字)はすべてのファイル共通で...続きを読む

Aベストアンサー

> この作業をフォルダに入ってるファイル全部へ一括で行いたいのですが、いいソフトはありま

そういうのはシェルスクリプトと sed, awk とか perl とかで、その場ででっちあげて済ますのが多いかな。一々エディタでちまちまやってられんし。


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

人気Q&Aランキング

おすすめ情報