EXCEL2000のVBAについてですが、ブック1とブック2があります。
ブック1からブック2のモジュールを呼び出すには、ブック1にはどのように記述すればよいのでしょうか?
簡単すぎてごめんなさい。

A 回答 (1件)

2つのエクセルファイルを開いていて、ブック1からブック2のマクロを実行するならば



Application.Run "ブック2.XLS!マクロ名"

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

上記コードはマクロの記録の結果を貼り付けております。
    • good
    • 0

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

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

QExcel B列の名前を見てA列に番号をふりたいです。1-1 1-2 2-1 2-2

質問させて頂きます。
日々の仕事の作業の中でExcelであるB列に前もって名前が入っています。
現状手打ちでB列の名前を見ながら1-1 1-2 名前が変わったら2-1 2-2 というように番号をふっています。時間短縮で何かいい方法はないでしょうか?(マクロなど)
ご回答お願い致します。
例を下に入れております。

A列   B列
1-1 山田太郎
1-2 山田太郎
2-1 佐藤和也
2-2 佐藤和也
3-1 吉田五郎
3-2 吉田五郎
3-3 吉田五郎
4-1 伊藤忠文
5-1 田口達也
6-1 東京世田谷区分譲
6-2 東京世田谷区分譲
6-3 東京世田谷区分譲

宜しくお願い致します。

Aベストアンサー

No.1です。

>時間短縮で何かいい方法はないでしょうか?(マクロなど)・・・
というコトですので、VBAでもやってみました。もちろん作業列は不要です。
シートモジュールにしてください。

Sub Sample1()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "A"), Cells(lastRow, "A")).ClearContents
End If
Range("C:C").Insert
Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=Range("C1"), unique:=True
For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
Set c = Range("C:C").Find(what:=Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
With Cells(i, "A")
.NumberFormatLocal = "@"
.Value = c.Row - 1 & "-" & WorksheetFunction.CountIf(Range(Cells(2, "B"), Cells(i, "B")), Cells(i, "B"))
End With
Next i
Range("C:C").Delete
Application.ScreenUpdating = True
End Sub


※ データがバラバラでも出現順に「1-○」のような結果になります。
こんな感じではどうでしょうか?m(_ _)m

No.1です。

>時間短縮で何かいい方法はないでしょうか?(マクロなど)・・・
というコトですので、VBAでもやってみました。もちろん作業列は不要です。
シートモジュールにしてください。

Sub Sample1()
Dim i As Long, lastRow As Long, c As Range
Application.ScreenUpdating = False
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "A"), Cells(lastRow, "A")).ClearContents
End If
Range("C:C").Insert
Range("B:B...続きを読む

Q2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

Windows XP Home Edition
Office XP Personal 2002
Excel 2002

画像のように、左.xls 右.xls 共に、
1レコードの 「 B列 と C列 」 の値が同じ行のセルを選択したいのですが、
うまく行きません。

画像の例では赤色セルの部分です。
左右のブックの赤色セルの各行番号は同じではありません。
B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

●2つのブックを左右に並べて、
 同じ行データを閲覧したいわけでございます。

何卒、ご教示のほどをお願い致します。

Sub TEST()
Const wBook = "右.xls" '表示させたいBook名
Const wSht = "Sheet1" '表示させたいSheet名
Dim Target As Range
Dim TargetVa As Integer

TargetVa = ActiveWindow.ActiveCell.Value

With Workbooks(wBook).Sheets(wSht)
  For Each Target In .Range("B1", .Range("B65536").End(xlUp))
   If Target.Value = TargetVa Then
    Workbooks(wBook).Activate
    Sheets(wSht).Activate
    Target.Cells.Select

   End If
  Next Target
 End With
End Sub

2つのブックで、1レコードの2列の値が同じ行のセル選択するには?

Windows XP Home Edition
Office XP Personal 2002
Excel 2002

画像のように、左.xls 右.xls 共に、
1レコードの 「 B列 と C列 」 の値が同じ行のセルを選択したいのですが、
うまく行きません。

画像の例では赤色セルの部分です。
左右のブックの赤色セルの各行番号は同じではありません。
B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

●2つのブックを左右に並べて、
 同じ行データを閲覧したいわけでご...続きを読む

Aベストアンサー

>B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

B列には「年/月/日」が記入されていて,書式で日だけ表示している。
Book1.xlsのSheet1に,ある月の日付とデータ(左)がB3から。
Book2.xlsのSheet1に通しのカレンダーの日付とデータ(右)。

Sub macro1()
 Dim s1 As Worksheet
 Dim s2 As Worksheet
 Dim target As Range
 Dim i As Long

 ’シートを指名すれば,親ブックも一緒に付いてくる。
 Set s1 = Workbooks("Book1.xls").Worksheets("Sheet1")
 Set s2 = Workbooks("Book2.xls").Worksheets("Sheet1")

 ’照合の開始位置は左の一番上のデータから
 Set target = s2.Range("B:B").Find(what:=s1.Range("B3").Value, LookIn:=xlFormulas, lookat:=xlWhole)
 If target Is Nothing Then
  MsgBox "base line not match"
  Exit Sub
 End If

 ’日付に漏れが無い前提で,開始位置からC列を照合していく
 For i = 0 To s1.Range("B65536").End(xlUp).Row - 3
  If target.Offset(i, 1).Value = s1.Range("B3").Offset(i, 1).Value Then
   s1.Activate
   s1.Range("B3").Offset(i, 1).Select
   s2.Activate
   target.Offset(i, 1).Select
   Exit Sub
  End If
 Next i
 msgbox "no match data"
End Sub



#別の方法
「フィルタオプションの設定」を使い,左のBC列の全データをクライテリア領域として,右のBC列を絞り込んでヒットした行を結果とする,といった手もあります。
マクロ以前に手動で操作できるので,まずエクセルを操って練習してみましょう。正しく絞り込み出来るようになったら,新しいマクロの記録でマクロを録って参考にしてみると良いです。

>B列(日付、実際には西暦です)だけは、全く同じデータとなっております。

B列には「年/月/日」が記入されていて,書式で日だけ表示している。
Book1.xlsのSheet1に,ある月の日付とデータ(左)がB3から。
Book2.xlsのSheet1に通しのカレンダーの日付とデータ(右)。

Sub macro1()
 Dim s1 As Worksheet
 Dim s2 As Worksheet
 Dim target As Range
 Dim i As Long

 ’シートを指名すれば,親ブックも一緒に付いてくる。
 Set s1 = Workbooks("Book1.xls").Worksheets("Sheet1")
 Set s2 = Workbo...続きを読む

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

Q【質問】ブック名AからシートをブックBへ移動する時、ブックAにシートを残してブックBにもコピーするには?

こんにちは、みなさん!!

【質問】ブックAのシートを、ブックBに移動する時に、ブックAにも
同シートを残しておき、さらに、ブックBに同シートを移動する事は
できますか?ドラック&ドロップでは、ブックAにシートはなくなり、
完全に、ブックBに移動されてしまいます。

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

はじめまして

ブックAの該当シートタブを右クリック、移動またはコピーを選択、移動先ブックをブックBに、コピーを作成するにチェックを入れてOK。
これでいけます。

また、ドラッグアンドドロップでするなら、「CTRL」キーを押しながらやってみてください。
移動ではなくコピーになります。

的外れでしたらごめんなさい。

Q標準モジュール、フォームを別のブックにコピーするには?

いつもお世話になります。
以下のようなVBAを作成しました。

sub test()
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Select
Sheets("在庫").Activate
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Copy
Sheets("在庫").Activate

ActiveWorkbook.SaveAs Filename:= _
"D:\" + CStr(Month(Date) + 1) + "月度在庫表",    FileFormat:=xlNormal,Password:="", WriteResPassword:="", ReadOnlyRecommended:=False,CreateBackup:=False
end sub

新しく作成したブックに標準モジュールとフォームが
コピーされません。
ほかにVBAの記述が必要かと思いますが、
本をひっくり返しても見つかりませんでした。

みなさま宜しくお願いいたします。

いつもお世話になります。
以下のようなVBAを作成しました。

sub test()
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Select
Sheets("在庫").Activate
Sheets(Array("追加テンプレート", "入庫", "出庫", "在庫")).Copy
Sheets("在庫").Activate

ActiveWorkbook.SaveAs Filename:= _
"D:\" + CStr(Month(Date) + 1) + "月度在庫表",    FileFormat:=xlNormal,Password:="", WriteResPassword:="", ReadOnlyRecommended:=False,CreateBackup:=False
end sub

新し...続きを読む

Aベストアンサー

シートのコピーだけではVBAは保存されません。

ActiveWorkbook.SaveCopyAs
の1行で、開いているブックのコピーを保存出来ます。


人気Q&Aランキング

おすすめ情報