• 締切済み

エクセルで、他のエクセルのワークシートからデータを取り込む方法について

エクセルで、他のエクセルのワークシートからデータを取り込む方法について 現在、下記のようなコードを考えているのですが、他のファイルからの取り込みがうまくいきません。 nen,xlsというエクセルのシート名11のc4:g45までを取り込みたいのですが、コピーされた値が「'\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45」となってしまいます。 アドバイスをいただければと思います。 Dim wStr As String today = Format(Now(), "m月d日") dve = ThisWorkbook.Path ActiveSheet.Range("c261:g310").Formula = "='\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45" Dim td, x td = Day(Date) x = (td - 1) * 5 + 8 MsgBox "今日は" & td & "日です。" With ActiveSheet .Range("c261:g510").Copy .Cells(3, x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone End With Excel.Application.CutCopyMode = False 以上です。

みんなの回答

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

右辺、「'\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45"」 そのまま使われているようなので、これを変数にして 内容確認してみてはどうでしょうか。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ご相談に掲示されたマクロは恐らくてきとーに編集されているため色々不明点が多すぎますが,多分, sub macro1() activesheet.range("C261:G310").formula = "='\\sv1\sv\" & fomrat(now, "m月d日") & "\[nen.xls]11'!c4" activesheet.cells(3, (day(date)-1)*5 + 8).resize(250, 5).value = range("C261:G510").value end sub のような事かなと思います。 それと肝心の困っている症状, >コピーされた値が「'\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45」となってしまいます。 これは何か事実とは違っているように思われます。 またご相談で掲示されている内容の不整合,つまりマクロで扱っているセル範囲のカタチがまるで合ってない  c4:g45までを取り込みたい  Range("c261:g310").Formula  Range("c261:g510").Copy などについて,再度きちんと見直して正してください。

demiguru
質問者

補足

回答ありがとうございます。一部省略して記述していました。コピーしたいコピー元は、次のとおりです。 ActiveSheet.Range("c261:g310").Formula = "='\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45" ActiveSheet.Range("c311:g360").Formula = "='\\sv1\sv\" & today & "\[nen.xls]12'!c4:g45" ActiveSheet.Range("c361:g410").Formula = "='\\sv1\sv\" & today & "\[nen.xls]13'!c4:g45" ActiveSheet.Range("c411:g460").Formula = "='\\sv1\sv\" & today & "\[nen.xls]14'!c4:g45" ActiveSheet.Range("c461:g510").Formula = "='\\sv1\sv\" & today & "\[nen.xls]15'!c4:g45" また、コピーされた値ですが、「'\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45」のようにリンクがコピーされてしまい、値が表示されないのは変わりません。 申し訳ありませんが、アドバイスよろしくお願いいたします。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

何がしたいのか、もう少し補足してください。 今のままですと、C261:G310の各セルにnen.xlsブックの「11」シートのC4:G45のセル範囲をリンクさせようとしている様に見えて意味不明です。 C261にnen.xlsブックの「11」シートのC4をリンク、C262にnen.xlsブックの「11」シートのC5をリンク……と言うイメージですか? その場合でしたら……。 ActiveSheet.Range("c261:g310").Formula = "='\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45" ↓ ActiveSheet.Range("c261:g310").FormulaR1C1 = "='\\sv1\sv\" & today & "\[nen.xls]11'!R[-257]C[0]" ただ、そうであればC261:G310ではなく、C261:G302が対象になるように思えますが?

demiguru
質問者

補足

回答ありがとうございます。説明が不足していて申し訳ありません。 毎日作成されるエクセルファイル(フォルダ名は日付でエクセルファイル名は固定)から値を取り込んで集計を行いたいと思っています。現在、数値データではなく「\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45」のようにリンク先が表示されてしまいます。これを数値データで表示させたいという質問をしたかったのです。言葉が足りずに申し訳ありません。 素人がいろいろなサイトなどを参考にして作成しているため、ごちゃごちゃと不整合が多いかもしれませんが、アドバイスよろしくお願いいたします。 Dim wStr As String today = Format(Now(), "m月d日") dve = ThisWorkbook.Path ActiveSheet.Range("c261:g310").Formula = "='\\sv1\sv\" & today & "\[nen.xls]11'!c4:g45" ActiveSheet.Range("c311:g360").Formula = "='\\sv1\sv\" & today & "\[nen.xls]12'!c4:g45" ActiveSheet.Range("c361:g410").Formula = "='\\sv1\sv\" & today & "\[nen.xls]13'!c4:g45" ActiveSheet.Range("c411:g460").Formula = "='\\sv1\sv\" & today & "\[nen.xls]14'!c4:g45" ActiveSheet.Range("c461:g510").Formula = "='\\sv1\sv\" & today & "\[nen.xls]15'!c4:g45" Dim td, x td = Day(Date) x = (td - 1) * 5 + 8 MsgBox "今日は" & td & "日です。" With ActiveSheet .Range("c261:g510").Copy .Cells(3, x).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone End With Excel.Application.CutCopyMode = False

関連するQ&A

専門家に質問してみよう