• ベストアンサー
  • 困ってます

エクセルVBAで、複数のブックからデータベースを作りたい

こんにちは。VBAをはじめたばかりの者です。 変数の使い方で教えていただきたいことがあります。 Dim myFLName As String myFLName = ThisWorkbook.Path & "\001.xls" Workbooks.Open Filename:=myFLName, ReadOnly:=True Workbooks("dbase.xls").Activate Range("A2").Select ActiveCell.Value = 1 ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R3") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("C2") ActiveCell.Offset(, 1).Select ActiveCell.Value = Workbooks("001.xls").Worksheets(1).Range("R2") ActiveCell.Offset(1, -3).Select 001.xls~(連番でない)200.xlsくらいまでのファイルがあり、 同じフォルダにdbase.xlsを作って1ブックから1レコードになるようにしたいと 思います。 こんな感じで1行目はできたのですが、2行目の1列目に「2」を入れ、 2列目からは001.xlsの次のブックを開いてセルの中身をコピーしたいのです。 変数の使い方がよくわからないのですが、教えていただけますでしょうか。 よろしくお願いいたします。

noname#183584

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数554
  • ありがとう数9

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

  • ベストアンサー
  • 回答No.5
  • Wendy02
  • ベストアンサー率57% (3570/6232)

#4 の補足 #自ブックのフォルダではなく、別のほうがよいですね。 と書きながら、 きちんと書かれていませんでしたが、 With Workbooks.Open(Fn, , True) は、別フォルダなら、 With Workbooks.Open(myPath & Fn, , True) となります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございました。 フォームは別フォルダにまとめてすっきりさせました。 あと、ちょこっと手直ししたら完璧に終了までに至るプロシージャとなりました。 どうもありがとうございました。

関連するQ&A

  • 異なるブック間でのセル範囲のコピー/VBA

    異なるブック間でクリップボードを経由せず直接コピーしたいため 下記のマクロを記述していますが、実行エラーが発生します。 どうしてでしょうか。 ThisWorkbook.Worksheets(3).Range(Cells(3, 1), Cells(3 + a, 1)).Value = Workbooks("excel.xls").Worksheets(1).Range(Cells(11, 3), Cells(11 + a, 3)).Value (補足) (1)VBA実行中のThisWorkbook、excel.xlsは別のブック ですが、同じフォルダにあります。 (2)aは数値が入る変数です。

  • excel vbaでの質問になります

    このようなマクロを作成したのですが、セルに数式が入れてあると、どうしてもその下の空白の行に値を入力されてしまいます。 数式が入っているセルにもそのままセルに値を入れたいのですが・・ 宜しくお願いします。 Dim wb1 As Worksheet, r1 As Range Dim N As Integer, i As Integer Dim mycount As Long   Set wb1 = ThisWorkbook.Worksheets("請求書") mycount = Range("B111").CurrentRegion.Rows.Count Cells(111 + mycount, 2).Select ActiveCell.Offset(0, 0).Value = wb1.Range("C60").Value ActiveCell.Offset(0, 1).Value = wb1.Range("C61").Value ActiveCell.Offset(0, 12).Value = wb1.Range("C66").Value ActiveCell.Offset(0, 13).Value = wb1.Range("C74").Value ActiveCell.Offset(0, 14).Value = wb1.Range("C75").Value ActiveCell.Offset(0, 15).Value = wb1.Range("C84").Value ActiveCell.Offset(0, 16).Value = wb1.Range("C85").Value ActiveCell.Offset(0, 20).Value = wb1.Range("C69").Value ActiveCell.Offset(0, 22).Value = wb1.Range("C68").Value ActiveCell.Offset(0, 23).Value = wb1.Range("C76").Value ActiveCell.Offset(0, 24).Value = wb1.Range("C77").Value Exit Sub

  • ブック内に特定名のシートがある場合

    はじめまして、こんにちは。 VBAを最近はじめたばかりの者です。質問が初歩的なもので申し訳ないのですが是非教えてください。 以下を使って、複数ブックの○○というシートから指定セルの内容を抜き出したいと思っています。 ところが、ブックによっては○○というシートが存在しない場合があり、その場合には「インデックスが有効でない」というエラーで動作が止まってしまいます。 ブック内に○○というシートがある場合にのみ動作させるようにするにはどのようにすれば良いのでしょうか。 よろしくお願いします。 Dim wb As Workbook, myRow As Long Dim e As Integer myRow = ThisWorkbook.Worksheets(1).Rows.Count With Application.FileSearch .NewSearch .LookIn = ThisWorkbook.Path .SearchSubFolders = True .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For i = 1 To .FoundFiles.Count If .FoundFiles(i) <> ThisWorkbook.FullName Then Set wb = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0) Application.ScreenUpdating = False ThisWorkbook.Worksheets(1).Range("A" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F6").Value ThisWorkbook.Worksheets(1).Range("B" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F7").Value ThisWorkbook.Worksheets(1).Range("C" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F8").Value ThisWorkbook.Worksheets(1).Range("D" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("Y6").Value wb.Close False End If Next i Else MsgBox "ファイルがありません。" End If End With End Sub

その他の回答 (4)

  • 回答No.4
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんばんは。 本来は、フォルダは、自ブックのフォルダではなく、別のほうがよいですね。 誰が書いても、だいたい同じようにはなります。しかし、データを吸い上げるブック自体に順序をつける場合は、もう少し工夫が必要です。 '一応、標準モジュールのほうが良いです。 Sub TestMacro1()   Dim Fn As String   Dim myPath As String   Dim dbBkSh As Worksheet   Dim i As Long   Set dbBkSh = Workbooks("dbase.xls").Worksheets(1)   myPath = ThisWorkbook.Path & "\"   Fn = Dir(myPath & "*.xls")   i = 1   '画面のちらつきを抑える   Application.ScreenUpdating = False   Do Until Fn = ""     If Fn <> ThisWorkbook.Name Then       With Workbooks.Open(Fn, , True)         dbBkSh.Range("A1").Offset(i, 0).Value = i         'B2 - sh.R3         dbBkSh.Range("A1").Offset(i, 1).Value = .Worksheets(1).Range("R3").Value         'C2 - sh.C2         dbBkSh.Range("A1").Offset(i, 2).Value = .Worksheets(1).Range("C2").Value         'D2- sh.R2         dbBkSh.Range("A1").Offset(i, 3).Value = .Worksheets(1).Range("R2").Value         .Close False         i = i + 1       End With     End If     Fn = Dir()   Loop   Application.ScreenUpdating = True   Set dbBkSh = Nothing End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございます。 わからないことばかりなので、いろいろ調べながら、勉強させていただきます。

  • 回答No.3

#1です。 すみません。そのエラーはキチンと場所を指定していないから起こっています。 Workbooks("xxx").Sheets("xxx").Cells(…)とシートを指定して下さい。 私も初心者の時は悩みまくり、本見まくり、ネットサーフィンしまくりでした。 ちなみにもし、オブジェクトが理解できるようでしたら、ぜひこの場合Workbookオブジェクトを使うといいと思います。 Dim WB as Workbook とWBという変数をワークブックオブジェクトとして定義します。 そしてSet WB = Workbooks.open("ファイルのフルパス")と言う形でセットします。 やってることは同じですが、こういうところから覚えていくとあとあと楽になると思うのでこの機会にゼヒ。 (たとえば新規ファイルをいくつか作ったらどうやって指定するの?みたいな話になった時、Set WB = workbooks.Add と指定できたりするので) それから、上記のコードそのままやると、私ブックを閉じるのを忘れているので200個のブックが開きっぱなしになります。 fn=dir()の前にブックを閉じる処理を入れて下さい。 Workbooks(fn).Close false WB.Close False ←オブジェクトならこう!簡単になります☆

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 ワークシートの指定が必要だったんですね。 オブジェクト、早速試してみます!

  • 回答No.2
  • imogasi
  • ベストアンサー率27% (4566/16351)

やりたいことが、読者側で良くコードを読まないとわかりにくい。 (A)やりたいことを文章で(出来れば実例も挙げて) (B)参考までに自分の考えたコード と整理すること。 以下に見本を挙げてみる。思考の整理状態を反映するはず。 (概略) 200個ぐらいのエクセルブックがある。ファイルは1つのフォルダの中にある。 その決まったセルを、1つのブック(且つ1つのシートに)集約したい。 集落されるデータは、集約されるブックの第1シートにある。 (詳細) 集約するブックはdbase.xlsのSheets(1) 集約されるそれは Workbooks("001.xls").Worksheets(1) -- セル関係は 仮にiというカウンターを考え、最初は2(第2行)から A列<--R3 B列<--C2 C列<--R2  右辺はこのようにに決まっている 1ブック処理終ると、ブックをクローズし、i=i+1とポインタを進める。次のブックを開く。 ==== 問題は ●仮にiというカウンターを考える(データをセットする、変動する行を受け持つ変数)。1ブック処理が終ると+1 ●>ActiveCell.Offset(, 1).Select こんなコードは普通記述しない。間違いではないが。 以上が気がついた点です。 全ファイル(ブック)を捉えるのは FSOでFor Eachで繰り回す例も多い。 http://officetanaka.net/excel/vba/filesystemobject/sample.htm の07など参照。WEBで他多数実例あり。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

説明がうまくできなくてわかりにくく申し訳ありません。 今日初めてVBEを使ってみたもので、本に書いてあることしか応用できず、普通記述しないとは知りませんでした。 参考サイトをありがとうございます。 勉強してみます。

  • 回答No.1

Dim fn as String, i as Integer Dim Mydir as String   Mydir = ThisWorkbook.Path   ChDir Mydir   fn = Dir(Mydir & "\*.xls")   if fn="" then Exit Sub '***** 入れなくてもいい文   i = 2   Do     If fn <> Thisworkbook.Name Then       '***** ここに処理を記入       myFLName = Mydir & "\" & fn & ".xls"       Workbooks.Open Filename:=myFLName, ReadOnly:=True       Workbooks("dbase.xls").Cells(i, 1)= i       Workbooks("dbase.xls").Cells(i, 2)= Workbooks(fn).Sheets(1).Range("R3")       Workbooks("dbase.xls").Cells(i, 3)= Workbooks(fn).Sheets(1).Range("C2")       Workbooks("dbase.xls").Cells(i, 4)= Workbooks(fn).Sheets(1).Range("R2")       fn = Dir()  '***** 次のファイル名を取得します     End if     i=i+1   Loop Until fn = "" これで、Mydir内のすべてのファイルをひとつづつ処理します。 変数fnにはファイルの名前が入るので… myFLName = Mydir & "\" & fn & ".xls" となるわけです★ Cells(i,1)は、Cells(y座標,x座標)になるので、最初のブックは2行目、次は3行目…というようになります。 Cells(i,1) は Range("A2") です。(i=2のとき) このように変数はDo~Loopで回すといいと思います。 行数は単純に増えるのでインクリメントでOKかと思います。 ただ、番号の小さい順にファイルを取得したりはしないですが、それは大丈夫ですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

スマートに書いてくださいまして、ありがとうございます!  私には本を見ながらしか書けないので、とても感激です。m(_ _)m 書いていただいたコードをステップインで実行していくと、次の場所で、       Workbooks("dbase.xls").Cells(i, 1)= i 実行時エラー '438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。 と出るのですが、どうしたらよいか教えていただけますか。

関連するQ&A

  • エクセルVBAで、ある特定な場所にあるブックが開いていたら閉じたい

    こちらでお世話になった者です。その節はありがとうございました。 http://okwave.jp/qa3972230.html 他のブックが開いているとエラーになるので、フォームのブックが開いていたら、 マクロの最初に閉じてしまいたいと思います。 dbase.xls formフォルダ  001.xls  002.xls  003.xls のようなフォルダ構造になっていて、001~003.xlsは入力フォームです。 dbase.xlsを開いて、マクロを貼り付けたボタンをクリックすると、すべてのフォームの データがdbase.xlsに取り込まれます。 ↓のような感じで、最初にメッセージが表示されるようにしたのですが、 自分以外の、formフォルダにあるブックが開いていたらそれをすべて閉じる 方法を教えていただけますか。 Sub data_torikomi() MsgBox ("開いている他のエクセルブックをすべて閉じてください") Dim Fn As String Dim myPath As String Dim dbBkSh As Worksheet Dim i As Long Set dbBkSh = Workbooks("dbase.xls").Worksheets("一覧表") myPath = ThisWorkbook.Path & "\" Fn = Dir(myPath & "form\*.xls") i = 1   ……

  • EXCEL VBA複数ブックからの貼り付け

    複数のブックにあるデータを一つのシートに繋げるマクロを作っています。 元となるブックのフォーマットは全て一緒の為下記の様なコードを書きました。 Dim OpenFileName As Variant, tmp As String, i As Long '複数のブック巣を選択 OpenFileName = Application.GetOpenFilename(FileFilter:="Microsoft Excelブック,*.xls", _ MultiSelect:=True) '名前の取得 If IsArray(OpenFileName) Then For i = 1 To UBound(OpenFileName) tmp = tmp & OpenFileName(i) & vbCrLf Next i MsgBox "選択したファイルは " & vbCrLf & tmp & " ", vbInformation Else MsgBox "キャンセルされました。", vbInformation End If '選択したブックを開く For i = 1 To UBound(OpenFileName) Workbooks.Open OpenFileName(i) Next i '最初のファイルをコピーをし、DataSheetに貼り付ける Workbooks(OpenFileName(1)).Worksheets("元帳").Cells.Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A1") '2個以降のファイルを下に貼り付ける For i = 2 To UBound(OpenFileName) Workbooks(OpenFileName(i)).Worksheets("元帳").Range("A9:V54").Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A65536").End(xlUp) Next i '最初のファイルをコピーをし、DataSheetに貼り付ける Workbooks(OpenFileName(1)).Worksheets("元帳").Cells.Copy _ Destination:=Workbooks("在庫表BETA.xls").Worksheets("DataSheet").Range("A1") 上の部分で『インデックスが有効範囲にありません。(Error 9)』の エラーが発生してしまい、困っております。 また、該当箇所をコメントアウトしても『2個目以降のファイルを貼り付ける』の箇所でも同様のエラーが発生してしまいます。 無知な私ですが、宜しくお願い致します。

  • エクセルマクロが重い

    こんにちは。 ご教授くださいませ。 すでに先方が作っているエクセルのシートがありまして、 そのシートの表組み規則にのっとって入力するユーザーフォーム を私のほうで作ったのですが、重いです。 selectの多用はだめ!というところまでは調べたのですが じゃあどうしたらいいかわかりません。 ■ '--------------------8時から If OptionButton1.Value = True Then ActiveCell.Offset(3, -1).Range("A1").Select ActiveCell = UserForm3.TextBox1.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox2.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox3.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox4.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox5.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox6.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox12.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox11.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox10.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox9.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox8.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox7.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox13.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox14.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox15.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox16.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox17.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox18.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox24.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox23.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox22.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox21.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox20.Value ActiveCell.Offset(0, -1).Range("A1").Select ActiveCell = UserForm3.TextBox19.Value ActiveCell.Offset(3, 0).Range("A1").Select ActiveCell = UserForm3.TextBox25.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox26.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox27.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox28.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox29.Value ActiveCell.Offset(0, 1).Range("A1").Select ActiveCell = UserForm3.TextBox30.Value 'ActiveWorkbook.Save MsgBox "入力しました。", vbInformation, "確認" End If '--------------------8時から(END ■ 基本の流れは... 最初にオプションボタン3つのどれか1個の 選択を求め、その条件に応じて 始基点となるセルが変わります。 で、あとは与えられた表組みを縦や横に 移動しながら、対応するテキストボックスの 値を入れる、という 我ながら頭の悪い方法で^^; .selectではない、スマートな方法があればと思います。 ぜひお知恵を!

  • EXCEL VBA 別ブックから貼り付け

    お世話になります。 A、Bという2つのブックがあります。 A.xls データファイル B.xls 処理実行ファイル Bブックを開いてSheet1に置いてあるボタンを押すとファイル洗濯ダイヤログが出てきて、そこで指定したBブックをsrtPathに格納(シートは1つだけ)のBブックのA1から全データをAブックのSheet1に貼り付けたいのです。 下記VBAを書いてみましたがエラーになってうまく動きません。 Workbooks(strPath).Range("A1").Copy ActiveWorkbooks.Worksheets("Sheet1").Range("A1").PasteSpecial どなたが解決方法をご教授いただけませんでしょうか。 よろしくお願い致します。

  • EXCEL 別シートのコピー(3)

    こんにちは。 こちらで以前こちらで質問をさせていただき、EXCELの別ブックのシートからコピーをしています。 元のブックのコピーを作り、そこに入力してもらい、元のブックにコピーをしています。(同じフォルダに入れて) Private Sub CommandButton1_Click() Dim myBook As Workbook Set myBook = Workbooks.Open(ThisWorkbook.Path & "\コピー元ブック.xls")  with workbooks("コピー元ブック.xls").worksheets("シート名").usedrange workbooks("貼り付け先ブック.xls").worksheets("シート名").range(.address).value = .value end with end sub ここでブックがない場合、そのブックを飛ばしてあるブックだけコピーしたい場合は、どうしたらいいでしょうか。いろいろやってみましたが、コピーできませんでした。 教えてください。

  • 指定セルを別ブックへ貼り付ける作業

    1.現在、見積書.xlsの見積汎用シートで以下の内容で同じブックのデータベース貼付シートに貼り付けています。 Sub データベース貼付() GYOU = Worksheets("データベース").Range("A65536").End(xlUp).Row + 1 Worksheets("データベース").Cells(GYOU, 1).Value = Range("H13").Value Worksheets("データベース").Cells(GYOU, 2).Value = Range("C8").Value Worksheets("データベース").Cells(GYOU, 3).Value = Range("C6").Value Worksheets("データベース").Cells(GYOU, 4).Value = Range("C15").Value Worksheets("データベース").Cells(GYOU, 5).Value = Range("D15").Value Worksheets("データベース").Cells(GYOU, 6).Value = Range("E15").Value Worksheets("データベース").Cells(GYOU, 7).Value = Range("G30").Value Worksheets("データベース").Cells(GYOU, 8).Value = Range("H1").Value 2.これを見積書.xlsの見積汎用シートを別ブックのデータベース.xlsのデータシートに貼り付けたいと思います。 3.以下の内容で仮に自分で貼り付けてみようとしましたがうまくいきません。 Sub コピーしてすべて貼り付ける() Workbooks("見積書.xls").Worksheets("見積汎用").Range(D6).Copy _ Workbooks("データベース.xls").Worksheets("データ").Range(B4) End Sub どのように、別ブックに指定したセルを貼り付けできるでしょうか?いろいろとサイトを見ましたがどうもうまくできませんでした。 説明がわかりづらく申し訳ないですが、どなたか教えていただけないでしょうか? よろしくお願い致します。

  • VBAでブックの集計の仕方を教えてください。

    H22.12月度と言う名前のフォルダーにA店&#65374;E店と集計と言う名前のブックがあります。 集計のブックでA店&#65374;E店の集計をしてくるマクロを組んでいますが上手く作動しません。 集計のブックには、セルの書式設定をしていますので、A店&#65374;E店の売上一覧のシートから 値だけをコピーして集計したいのですが、罫線やパターン、数式までコピーしてきたり、 最後のE店だけ2重にコピーしてきたりと変な動作をします。 初心者で本やネットで調べながら作ったので、どこの記述がおかしくて、そうなるのかがさっぱりわかりません。 どなたか教えていただけませんでしょうか。よろしくお願いします。 Sub 集計() Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\A店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("A店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close     ・     ・     ・(B・C・D店も同じ記述)     ・     ・   Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\H22.12月度\E店.xls" Sheets("売上一覧").Select Range("E5:Q24").Select Selection.Copy Application.WindowState = xlMinimized Windows("集計.xls").Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False If Range("E5").Value <> "" Then Range("E65536").Select Selection.End(xlUp).Select Selection.Offset(1, 0).Select End If ActiveSheet.Paste Windows("E店.xls").Activate Range("E5").Select Application.CutCopyMode = False ActiveWindow.Close    Windows("集計.xls").Activate Application.WindowState = xlMaximized Range("E5").Select End Sub

  • エクセルxpのVBA

    VBA初心者です。下記を実行すると、「elseに対応するifがありません」と出ます。なぜかわからず困っています。 For hiniti = DateSerial(Range("A3"), Range("A4"), 21) To DateAdd("m", 1, DateSerial(Range("A3"), Range("a4"), 20)) ActiveCell.Value = hiniti ActiveCell.Offset(0, 1).Select If ActiveCell.Column = 7 Then ActiveCell.Offset(1, -7).Select Else: ActiveCell.Offset(0, 1).Select End If next end sub

  • ブックの選択について

    ブックの選択について 以下のように、マクロのあるブック意外のブックを開いて からマクロのあるブックを選択しようとしてもできません。 具体的には一番下の Workbooks(thisBook).Select が正常に動きません。 なぜでしょうか? Dim myFName As String Dim macrobook As Object Dim thisBook As Workbook Set thisBook = ThisWorkbook myPath = ActiveWorkbook.Path ChDir myPath myFName = Dir("*S*.xls") Workbooks.Open Filename:=myFName Workbooks(myFName).Activate Worksheets(1).Select Workbooks(thisBook).Select

  • ExcelのVBAについてです。

    例えば"Book1.xls"という名前のブックの"Sheet1"という名前のシートの一部を削除する。 これをVBAでやらせようと思うんですが、"Book1.xls"を開かずに行うことはできるんでしょうか。 Workbooks("Book1.xls").Worksheets("Sheet1").Range("C7:M51").ClearContents のようにしてるんですがうまくいきません。 "Book1.xls"はLAN上のブックで実際はフルパスで指定してます。 よろしくお願いします。