(1)アクティブブックの名前を取得してセルO2に貼り付けた。ex. 1234567b.CSV
(2)VBAを使って1234567k.CSV におきかえた。
(3)(2)のセルに入力された内容でブックを開きたいが、エラー1004が出て開けない。
(4)開けたとして、そのブックのA1セルを 元のブックをアクティブにして D1に 貼り付けたい。
(5)またさっきのブックに戻ってF1セルを 元のブックをアクティブにして E1セルに貼り付けたい。
というようなVBAを組みたいと思っています。
現在(1)(2)はできましたが(3)でエラーが出たため止まっていますし、その後もわかりません。
Dim bb As String
Dim kb As String
bb = ActiveWorkbook.Name
Cells(2, "O").Value = ActiveWorkbook.Name
Cells(3, "O").Value = ActiveWorkbook.Name
Range("O2").Formula = Replace(bb, "b.CSV", "k.CSV")
kb = Range("O2")
'シート名を取得する
Dim bbs As String
bbs = Left(bb, 10)
Cells(4, "O").Value = bbs
Dim kbs As String
kbs = Left(kb, 10)
Cells(5, "O").Value = kbs
'コピーして貼り付ける
kbn = Cells(2, 15)
Workbooks.Open Filename:=kbn
Range("F1").Select
Range("F1").Copy
として作ってるんですが、
Workbooks.Open Filename:=kbn
でエラーが出てブックが開けません。
ご指導お願いします。
No.2ベストアンサー
- 回答日時:
Replece関数の文字比較がバイナリーで行われている為、変換元ファイルは既にオープン
なのでエラーになります。
テキストモード指定にすれば大文字・小文字関係なしの比較になり、変換できると思います
のでお試しください。
Range("b2").Formula = Replace(bb, "b.CSV", "k.CSV", , , vbTextCompare)
教えていただいた方法でできました。ありがとうございます。
またもう一つChDriveとChdirを指定する事でできました。←他人は使用できない・・・
ですのでとても助かりました。ありがとうございました。
No.1
- 回答日時:
だって
>Workbooks.Open Filename:=kbn
の時点で kbn に入っている名前のファイルはないんでしょう?そりゃエラーになりますよ。
これはVBAに限らず、「新規ファイルを任意のファイル名で開く」という動作は普通できません。あきらめてください。というか、新規ファイルを特定の名前で開く理由がわからない。よかったら理由を聞かせてほしいです。
で。
いちばん近いのは「新規ファイルを開いて任意の名前で保存する」ことでしょう。addメソッドで新規にブックを作り、saveメソッドで名前を付けて保存。
ところで、希望の動作と実際のコードがかみ合ってないのはなぜでしょう?「シート名を取得する」で一切シート名に触れてないとか……
もうちょっと基本から勉強することをお勧めしますよ。
(1)
>bb = ActiveWorkbook.Name
>Cells(2, "O").Value = ActiveWorkbook.Name
>Cells(3, "O").Value = ActiveWorkbook.Name
なぜ変数に入れておきながらわざわざ2回とも取得しなおしてる?
bb = ActiveWorkbook.Name
[O2:O3].Value = bb
(2)
>Range("O2").Formula = Replace(bb, "b.CSV", "k.CSV")
>kb = Range("O2")
値を入れているのになぜFormulaプロパティ?
そしてなぜセルに値を入れてから取得?
kb = Replace(bb, "b.CSV", "k.CSV")
[O2].Value = kb
(3)は上記のとおりなので割愛。
>Dim bbs As String
>bbs = Left(bb, 10)
>Cells(4, "O").Value = bbs
>Dim kbs As String
>kbs = Left(kb, 10)
>Cells(5, "O").Value = kbs
これは何?
(4)(5)
With WorkBooks("1234567b.CSV")
.[D1] = WorkBooks(kb).[A1]
.[E1] = WorkBooks(kb).[F1]
End With
ところで、ここまで書いておきながらいまさら気づいたけど、今の質問者さんのレベルで「CSVをExcelで開いてVBAで編集」なんてことは無謀ですよ。ほかの方法を考えたほうが多分早い。
最近VBAをいじり始めたばかりの初心者でして、独学でゆっくりと勉強している最中でございます。
こうなれば便利だな。こういうのを作ってみたいなと思い、その都度ちょっとずつ勉強していってます。
シート名はブック名から拡張子を除いた文字列だった為、使わないセルにブック1の名前、ブック2の名前とそれぞれ必要なシート名を挿入して、そこの文字から参照して開けないか?という方法で考えました。
えと誤解があったようですので、新規ファイルではなくCSV出力した時にできた複数のブックを参考にしたいという事です。
何分初心者ですので、わかりにく説明でございました。ご容赦ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
Excelでブックの共有を掛けると...
-
エクセルの関数 ENTERを押...
-
エクセルで参照しているデータ...
-
アクセスvbaでエクセルブックを...
-
エクセルで別ブックをバックグ...
-
複数ファイルから特定シートの...
-
別フォルダにある同じ名前のブ...
-
VBAでブック保護非保護を判定す...
-
vbaでpdfを開いて1ページ目のみ...
-
同じフォルダへのハイパーリン...
-
Excelで拡張子の後に数字が……何...
-
エクセルで50行ごとに区切った...
-
エクセル2010 書式が多すぎて...
-
ワードやエクセルで「時間が来...
-
Excel(2010)のフィルターが保...
-
エクセル2016です。「ブッ...
-
エクセルVBAでブック保護のUser...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルにおける,「ブック」...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】別ブックへの...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルで50行ごとに区切った...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
VBAでブック保護非保護を判定す...
-
【マクロ】for nest について ...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
おすすめ情報