こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【マクロ】指定したファイルを開いてマクロを実行

マクロ初心者です。よろしくお願いします。

<質問>
コマンドボタンをクリックしたら、任意のエクセルファイルを指定して開き、その開いたファイル(白紙状態のファイル)にマクロを実行させる方法を探してます。

<作成マクロ>
Private Sub CommandButton1_Click()
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
End If

Workbooks(Dir(OpenFileName)).Activate

ActiveCell.FormulaR1C1 = "テスト"
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

<マクロ説明>
--コマンドボタンをクリックして指定したエクセルファイルを開く--

Private Sub CommandButton1_Click()
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
End If
Workbooks(Dir(OpenFileName)).Activate

--開いたエクセルファイル(白紙状態)のセルA1に「テスト」を入力した後、コピーしセルB2に貼り付ける--
 
ActiveCell.FormulaR1C1 = "テスト"
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
End Sub

コマンドボタンをクリック

任意のエクセルファイルを指定して開く

開いたファイル(白紙状態のファイル)のセルA1に「テスト」と書き込み
セルA1の「テスト」をコピーしセルB1に貼り付ける

このマクロを実行させるにはどこを改善すれば良いでしょうか?
ご助言いただけると助かります。
よろしくお願い致します。

投稿日時 - 2009-08-21 12:00:24

QNo.5224838

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>コマンドボタンをクリックしたら
フォームかシートのコマンドボタンのある、このマクロを書く(描いてある)ブックーー>手動で開く、でよいですね。
>(白紙状態のファイル)の
を求めていながら、なぜファイルを探すのか。白紙で保存したファイルがあり、その名前を操作者やプログラマは知っているのか(なにかおかしい)
同じ枠内で新規白紙のブックを作成
Sub test02()
Workbooks.Add
End Sub
枠外(別エクセル起動)の場合
Sub test01()
Dim appexl
Dim bk
Set appexl = CreateObject("Excel.application")
Set bk = appexl.Workbooks.Add
appexl.Visible = True
End Sub
ーー
または、開いたブックの白紙のシートを探すのか。またはシート挿入するのか。
===
ここらを惑わせる質問文になっていて、回答しづらい。

投稿日時 - 2009-08-21 17:05:11

ANo.1

書き方はさておいて、とりあえずそのまま実行させるには、後半の部分でシートを明示するようにして、

ActiveCell.FormulaR1C1 = "テスト"
ActiveSheet.Range("A1").Select
Selection.Copy
ActiveSheet.Range("B1").Select
ActiveSheet.Paste

みたいにすれば、実行はされます。

ただし、意図しているのとは違う結果になる可能性があります。
>開いたファイル(白紙状態のファイル)の~
ユーザが指定するファイル(存在するファイル)を開いているので、「白紙状態」であるとは限りません。(むしろ書き込んであるほうが当たり前)

>セルA1に「テスト」と書き込み~
ActiveCellを指定しているので、保存時の状態が影響します。
どのセルに書き込まれるかは分かりません。

>セルA1の「テスト」をコピーしセルB1に貼り付ける
マクロ内で書き込んだものなら、わざわざコピーしなくても続けて記入すれば良いというのは置いておいても、↑で指摘したようにA1に「テスト」と書かれるとは限らないので、B1の値は何になるのかはA1の値次第。

書き方については、他の方にお願いします。

投稿日時 - 2009-08-21 12:39:18

あなたにオススメの質問