• 締切済み

教えて下さい。VBAマクロで困ってます。

fumufumu_2006の回答

回答No.4

以下を試してみてください。 手動で、 デスクトップ上のA.xlsを開く。 デスクトップ上のBフォルダ内のC.xlsを開く。 A.xlsのSheet1のA1:B4範囲をコピーする。 C.xlsのSheet1のA1を選んで、[編集][形式を指定して貼り付け]の[値]をする。 A.xlsを閉じる。 C.xlsを閉じる。この時「変更を保存しますか?」と聞かれるので「はい」を選ぶ。 この時、エラー、警告、その他のメッセージや結果が、問題のA.xlsとC.xlsに対して行った場合と何か違う所はありませんか? プログラムはこれ(とほぼ同等な事)をしています。 また、 新規でブックを作り、Sheet1のA1:B4範囲に適当な値を入れて、デスクトップ上にA.xlsの名前で保存して閉じる。 新規でブックを作り、何もせずにデスクトップ上のBフォルダ内にC.xlsの名前で保存して閉じる。 これに対してプログラムを実行する。 この時、エラー、警告、その他のメッセージや結果が、問題のA.xlsとC.xlsに対して行った場合と何か違う所はありませんか? これは私がサンプルデータを作って試した時の状況です。 以下のサンプルでは、最後にA.xlsやC.xlsは閉じますか? また、msgboxのメッセージ以外で、途中で何かメッセージは出ませんか? Sub Sample1() Dim srcBook As Workbook Dim dstBook As Workbook Dim desktopPath As String desktopPath = CreateObject("WScript.Shell").SpecialFolders("desktop") 'デスクトップのパス Set srcBook = Workbooks.Open(desktopPath & "\A.xls") 'コピー元ブック(デスクトップのA.xls) Set dstBook = Workbooks.Open(desktopPath & "\B\C.xls") 'コピー先ブック(デスクトップのBフォルダ内のC.xls) MsgBox "これから閉じます" srcBook.Close '閉じる dstBook.Close savechanges:=True 'コピー先ブックは、変更を保存して閉じる End Sub Sub Sample2() Dim srcBook As Workbook Dim desktopPath As String desktopPath = CreateObject("WScript.Shell").SpecialFolders("desktop") 'デスクトップのパス Set srcBook = Workbooks.Open(desktopPath & "\A.xls") 'コピー元ブック(デスクトップのA.xls) MsgBox "A.xlsを開いてます" srcBook.Close '閉じる End Sub Sub Sample3() Dim srcBook As Workbook Dim dstBook As Workbook Dim desktopPath As String desktopPath = CreateObject("WScript.Shell").SpecialFolders("desktop") 'デスクトップのパス Set srcBook = Workbooks.Open(desktopPath & "\A.xls") 'コピー元ブック(デスクトップのA.xls) MsgBox "A.xlsを開いてます" Set dstBook = Workbooks.Open(desktopPath & "\B\C.xls") 'コピー先ブック(デスクトップのBフォルダ内のC.xls) MsgBox "BフォルダのC.xlsを開いてます" dstBook.Close MsgBox "BフォルダのC.xlsを閉じました" srcBook.Close '閉じる MsgBox "A.xlsを閉じました" End Sub

Tegutan
質問者

補足

本当に申し訳ないんですけど,Sample1~3では、どれもA.xlsは開いた状態で、c.xlsには一瞬A.xlsのの値が一瞬表示されますが、すぐに値が消え(値は保存されません)、c.xlsは開いた状態で終わります。

関連するQ&A

  • マクロ VBA入力

    シート1  A    B   C     1 コード コード 金額     2 01 シート2  A    B   C   D   E     1 コード 名前 コード 名前 金額     2 01    あ  02   い  20     3 01    あ  03   う  30 シート1とシート2があります。シート1のA2に入力されたコードがシート2のA列に入力されていたら、その行のC列のコードをシート1のB2に反映し、E列の金額をシート1のC2に反映する。シート1のA2のコードは、シート2のA列に複数あるため、この作業を繰り返す。 シート1 A  B   C  1 コード コード 金額   2 01   02   20  3 01   03   30とできるようにするにはどうすればいいでしょうか?分かりにくい文章で申し訳ありません。関数では無理なのでVBAの入力しかないかと考えていますが、VBAは全くの初心者で困っています。どなたかご回答宜しくお願いいたします。   

  • 【VBA】マクロについて

    【VBA】マクロについて質問です。 マクロで複数のシートの特定のセル(A5(日付)、A7(社名)、B3(担当者)など)を別ブックのひとつのシートにまとめて、 日付 社名 担当者 シート1 A5 A7 B3 シート2 A5 A7 B3 シート3 A5 A7 B3 のように下へ下へ積み上げていくにはどうゆうマクロを組めばいいでしょうか。 同じ作業を複数のファイルで行わなければいけないため、マクロを組みたいのですが、よくわかりません>< ファイルによってシートの数が違うので、それにも対応すると有難いです。 どうぞよろしくお願いいたします。

  • エクセルVBAでCSVを読み込んで別ファイルにまとめたいです。

    エクセルVBA初心者の者です。 マクロの記録でできたコードをいじって、 なんとか動くものができるレベルです。 Aというフォルダに20~40行程度の内容のCSVファイルが 数百個あります。開けてみないと何行あるのかわかりません。 そのAフォルダのCSVの内容をエクセルで開いて、別のエクセルファイルの一枚のシートにまとめたいのです。 最初にCSVファイル名を一枚のシートのA列に書き出すところ まではやれたのですが、それを順番に読み込んでコピペの 流れができません。 CSVファイル名読み込み 読み込んだファイル1つめCSV開く CSVの20~40行をコピー 別のエクセルファイルのシートに貼り付け 1つめCSV閉じる ↓ 読み込んだファイル2つめCSV開く 繰り返し こういうやり方じゃない方がいいのかもわかりません。 もしかして考え方も違うのでしょうか? サンプルコード教えていただけるとありがたいです。 よろしくお願いします。

  • VBA(マクロ)について

    エクセルのマクロを使って下記のように実行を考えています。 A列のコード番号が一定ではないため、処理に困っています。 どなたかアドバイス頂けないでしょうか。 詳細についてです。A列にコード番号があり、B列に数値があります。 例えば、A列の1~3行目まで100とあり、4~5行目まで400と1~3行目と4~5行目の数値はおなじです。3行分だったり2行分だったりと不規則に下に続いていきます。 そのA列の同じコード番号全てに対して、B列の値を合計してC列に合計値を入力したいのです。 C列の合計値入力箇所は、A列の1~3行目までだとするとC列1行目に合計値がくるようにしたいのです。 ちなみに行数は10万桁ほどあります。

  • EXCEL マクロ・VBA 自動で連番を振る

    EXCELのマクロ・VBAについて質問です。 例えば、B列にデータを入力すると、入力した行まで自動的にA列に連番が入力されるようにしたいのですが、どういった方法があるでしょうか。 マクロやVBAについてはこれから勉強をしようと思っている素人ですので、コードとその解説をいただけると助かります。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 マクロを発動した時に、あるセルに入力してある数値を参照し、その行のX列目に数値を張り付けるものを作成しようとしています。 例えば シート「1」の A1に日付を入力 B1にある数字を入力 シート「2」の A列にA1→1~A31→31の日付が入力されている時 マクロ発動時にシート「1」A1の日付と一致する シート「2」のB列にシート「1」のB1の値を貼り付け ↑たとえばシート「1」のA1が1日でB1が500だった場合 シート「2」の1日(A1)と同じ行でB列(B1に500を 貼り付けるものです。 かなり下手な説明だと自覚しておりますが、解読できる方 どうかご教授ねがいます。

  • VBAにて

    初めまして、宜しくお願いします。 エクセルのVBAの処理を最近やり始めたのですが、私には ハードルが高くて、よく解りません。。。 出来るのかも解らないのですが、それもふまえて教えて いただけると助かります。 A列:名称 B列:概要 C列:ファイル名 D列:フォルダ構成 のエクセルファイルがあります。 各列ともに、何行にも渡りデータが格納されております。 これを読み込んで、ローカルにある指定のエクセルファイル(シート) をD列にある、C列のファイルに全てコピーしていきたいのです。 そのかたわらで1行ずつの処理結果を、ログに出力していくような 感じにしたいのですけど出来ますか?? 教えて下さい。 あと、もし可能であればフォルダがネットワーク上にあっても 可能なのか知りたいです。 宜しくお願いします。

  • ★エクセルマクロコード教えていただけますでしょうか

    マクロのコードを組みたいと考えておりますが、 ほとんど初心者のため、お詳しい方の力を貸していただきたい次第でございます。 m(__)m ○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。  その後、そのシートを各フォルダに保存したい。 あるデスクトップ上にあるエクセルシート「管理DB」の「sheet1」にある管理データ A列(グループa~e)、B列(登録日)、C列(ステータス)によって構成されているシートで、 1.A列「グループ」「a」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダX本部」に保存。 1~5の一連の作業をグループがなくなるまで繰り返したいと考えています。 1.A列「グループ」「b」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダY本部」に保存。 ※一連の作業の中で、グループ名と、シートの保存先が変わる以外、この作業の繰り返し。 以上の作業を実行するマクロを組むことは可能でしょうか。 また、マクロのコードを教えていただけると幸いです。 マクロについてお詳しい方、何卒よろしくお願いいたします。

  • エクセルマクロ(VBA)の立て方について

    お世話になっております。 エクセルのVBAマクロについて教えてください。 以下のように2種類A,Bの縦に並んだ時系列データがあった場合、 A No1  2012/6/1    1 A No2  2012/7/1    3 A No3 2012/8/1    4 B No1  2012/6/15   2 B No2 2012/7/15   6 B No3  2012/8/15   7 B No4  2012/9/15   9 上記のデータを別のシートに以下のように表示させたいのです。 (上記1列目は以下1列目に対応、上記4列目の数字をA、B単位で累計和を以下2列目に表示) A 1 A 4 A 8 B 2 B 8 B 15 B 24 以上のVBAマクロの数式の立て方を教えていただけますでしょうか。 よろしくお願いいたします。

  • これはマクロ、VBAが必要ですか?

    データベース用のエクセルファイルに10年間の気象データがあります。 列A   B    C   D 日付  天気 最低気温  最高気温 別のBOOKのシートに 任意の期間(可変)を設定できて、その期間をデータベースから検索し A~D列に表示したいと思ってますが マクロ、VBAを使った方が良いでしょうか? マクロ、VBAは未経験なのでまずはフリーソフトをいろいろ探してます。使えそうなものをご存知ありませんか? VBAも必要があればこの機会に少し学びたいとも思います。 ちなみに10箇所の地域で解析するので、やはりそれぞれBOOKを作った方がいいですよね? どうかよろしくお願いします。