• 締切済み

エクセル2000で作ったファイルをエクセル2007で

OSはWinXPです。エクセル2000でこちらで作成して頂いた下記のようなマクロを使用していました。 セルI6,I21,I39,C39へZ:\社内データ\生産管理\製品見取り図\添付用に入っているセルM15の名前の略図を自動で添付するというものです。 この度、職場のパソコンの入れ替えに伴いエクセル2007に変更され、2007でこのファイルを開きマクロを実行すると 4枚の略図は指定したセルとは違う場所へ重なって添付されてしまいます。 (フォルダ名は修正済) エクセル2000で作成したマクロは2007では正常に動作しないものですか?変更するべきコマンドなどがあるのでしょうか? 他にも動作しないマクロがあり困っています。エクセル2007の操作にまだ不慣れな為アドバイスを宜しくお願いします。 Sub pictureSet() Dim jpgRg As String jpgRg = "M15" Dim myFolder As String myFolder = "Z:\社内データ\生産管理\製品見取り図\添付用\" Dim jpgFilename As String 'jpgファイルのフルパス jpgFilename = myFolder & ActiveSheet.Range(jpgRg) & ".jpg" '指定したセルにjpgファイルを貼り付ける Range("I6,I21,I39,C39").Select '挿入する個々のセル For Each rg In Selection rg.Select ActiveSheet.Pictures.Insert(jpgFilename).Select Next ActiveSheet.Range(jpgRg).Select End Sub

みんなの回答

  • wolf03
  • ベストアンサー率22% (241/1086)
回答No.1

95以降のエクセルのマクロは全てにおいて100%の互換などありません。 各バージョン用に手直しすることになります。 例示された物の場合は、貼り付け先のセルの選択をする部分で互換が無いのでしょう。 非互換項目はMSの提示している資料で探すことになるでしょう。 一般の解説書などで載っていればいいのですが。

moonhare
質問者

お礼

有難うございます。 解説書が見つかるか、それを見て私に分るかどうか自信はありませんが、探して調べてみます。

関連するQ&A

  • エクセル2007

    Public Sub PrtPicture(aPos As String, aPic As String) EX.worksheets("Sheet1").range(aPos).Select EX.ActiveSheet.Pictures.Insert(aPic).Select End Sub このようなサブルーチンを作成しました。 エクセルのシートの任意のセルに、ファイルで指定した図を貼り付けます。 aPosは、"B5" aPicは、"C:\図\ABC.jpg"のようにしています。 エクセル2003までは、きちんと指定したセルの位置に張り付きますが エクセル2007では、指定したセルの位置には張り付かないです。 VBAに大きな、違いができたのでしょうか? 宜しくお願いします。

  • マクロでセルに入れたファイル名の画像を隣のセルに読

    みこむ。 マクロで「セルに入れたファイル名の画像を隣のセルに読み込む」作業をVBA でつくりました。 そのファイル名がないときは、飛ばすようにできないでしょうか。 「 Set myPic = ActiveSheet.Pictures.Insert(sCurDir & myCell.Value & ".JPG")」 ここでとめられてしまいます。    A(No)  B(名)    C(画像) --------------------------------------------- 1   1   test01   D:\画像\teet01.JPG 2   2   test02   D:\画像\teet02.JPG 3   3   test03   D:\画像\teet03.JPG Private Sub CommandButton1_Click() Dim i As Long Dim myPic As Object Dim myCell As Range Dim sCurDir As String sCurDir = ThisWorkbook.Path & "\画像\" For i = 6 To Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row Step 6 Set myCell = Range("B" & i) Set myPic = ActiveSheet.Pictures.Insert(sCurDir & myCell.Value & ".JPG") With myPic .Left = Range("C" & i).Left .Top = Range("C" & i).Top .Width = Range("C" & i).MergeArea.Width .Height = Range("C" & i).MergeArea.Height End With Set myPic = Nothing Next i End Sub

  • テキストファイルをエクセルに移すマクロのことで?

    以前、複数のテキストファイルをエクセルに移すマクロを教えてもらったのですが、 以下マクロですと、フォルダのパスを指定しないといけません。 今回教えてもらいたいのは、フォルダのパスを指定しなくてもよい方法です。 どういう事かと言うと、仮にディスクトップにフォルダがあるとします。 そのフォルダの中には、マクロが入っているエクセルシートとテキストが入っているフォルダです。 つまり、そのフォルダ内だけで、処理をしたいと考えています。 また、フォルダ名は、その時によって異なります。 今までは、以下の方法を使っていたのですが、ちょっと使いにくいと感じています。 申し訳ありませんが、どなたか教えていただけないでしょうか? Sub Macro() Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim FolderPath As String 'ここのアドレスをファイルが格納されているフォルダのパスに変えてください FolderPath = "C:\Users\・・・" Dim myFile As Object Dim i As Long i = 2 Dim myFolder As Object For Each myFolder In fso.GetFolder(FolderPath).SubFolders For Each myFile In fso.GetFolder(myFolder).Files Cells(i, 4).Value = myFolder Cells(i, 1).Value = myFile.Name Cells(i, 7).Value = fso.OpenTextFile(myFile.Path).ReadAll() i = i + 1 Next Next End Sub Private Sub CommandButton1_Click() End Sub

  • エクセルの select case文

    Dim i For i = 1 To 5 Select Case Cells(i, "A") Case "午前" Range("w1").Select Selection.Copy  Cells(i, "C").Select ActiveSheet.Paste Case "午後" Range("x1").Select Selection.Copy Cells(i, "d").Select ActiveSheet.Paste  End Select Next i Dim j For j = 1 To 5 Select Case Cells(j, "A") Case "関東" Range("y1").Select Selection.Copy  Cells(j, "e").Select ActiveSheet.Paste Case "関西" Range("z1").Select Selection.Copy Cells(i, "F").Select ActiveSheet.Paste  End Select Next i 毎回皆様にはお世話になっています。 あるセルを参照してその入力結果により 違うセルを貼り付けるマクロを組みました。 参照するセルが複数個(この例だと2セル)あるので それぞれに変数を宣言してfor nextで まわしています。 この内容を変数ひとつだけで すっきりと記述することは可能でしょうか? 参照するセルや判別する内容が増えると 記述が膨大になって マクロが 見にくくなるので 良い方法がありましたら 御教授ねがいます。

  • エクセルVBA-カウンター i と j の使い方

    2つの条件を同時に満たすと図形を別のワークシートにコピーし、600行程度あるワークシートなので For - Next を使ってその作業を繰り返す、というエクセルのマクロを以下のように書き込みました。ところがマクロを実行すると、一番最初の行だけ正確に実行され、次に条件を満たす行があっても図形がコピーされません。(ということはカウンター i, j の使い方が間違っているのです)どなたか私の素人コードを見て修正方法を教えてください。お願いします。 Sub finalize() Dim MyStr As String Dim i As Long Dim j As Long  For j = 2 To 1482 Step 40 For i = 3 To 188 Step 5 MyStr = Range("O" & i) If MyStr <> "" Then                    '条件1 If Range("L" & i).Value = "毎日" Then      '条件2   Sheets("図形_現読").Select ActiveSheet.Shapes.Range(Array("毎日")).Select Selection.Copy Sheets("印刷画面").Select Range("AG" & j).Select ActiveSheet.Paste Else If Range("L" & i).Value = "朝刊" Then Sheets("図形_現読").Select ActiveSheet.Shapes.Range(Array("朝刊")).Select Selection.Copy Sheets("印刷画面").Select Range("AG" & j).Select ActiveSheet.Paste End If End If End If Next i Next j End Sub

  • Excel VBAについて

    Excelで、指定したセル範囲の外枠に罫線を引き四角形を作り、B1の数字を変えていくと四角形を横に描いていくというマクロを作成したのですが、B1の数値を変えてマクロを実行すると以前に描いた四角形が残ってしまいます。これを数値を変えてマクロを実行すると、以前の四角形を消して新たに四角形を描くにはどうすればよいのでしょうか。何かいい方法があれば教えてください。宜しくお願いします。以下にコードを示しておきます。 Public Sub Main_Code() a = ThisWorkbook.Worksheets("Sheet1").Range("B1") If a = 2 Then Range("I26:K35").Select Selection.BorderAround Weight:=xlMedium Range("B1").Select ElseIf a > 2 Then Dim i As Integer For i = 3 To a Range("I26:K35").Select Selection.BorderAround Weight:=xlMedium Range("I26:K35").Select Selection.Copy Cells(26, 3 * i + 3).Select ActiveSheet.Paste Application.CutCopyMode = False Range("B1").Select  Next i  End If End Sub

  • VBAによるエクセルデータの貼り付けについて

    会社で使用しているエクセルにボタンがあり、そのボタンを押すと指定したフォルダー内のファイルのデータをコピーし、貼り付けるようVBAコードが設定されています。 指定したファイルのデータを下記のどの部分でセルを指定しているのかを教えてください。 Sub 読込() Dim WorkFileNAME, FolderNAME, DBYear, DBMonth, ItemNO(45) As String Dim WorkSheetNAME As String Dim i As Integer Dim BASECelladd1, BASECelladd2 As String BASECelladd1 = "C4" BASECelladd2 = "D3" WorkFileNAME = ActiveWorkbook.Name WorkSheetNAME = ActiveSheet.Name Worksheets(WorkSheetNAME).Select FolderNAME = Range("J1").Value & "\" & Range("T1").Value DBYear = Range("D1").Value DBMonth = Range("E1").Value i = 0 Do While i <= 45 ItemNO(i) = Range(BASECelladd1).Cells(i + 1, 1).Value i = i + 1 Loop Data11READ WorkFileNAME, WorkSheetNAME, FolderNAME, DBYear, DBMonth, ItemNO, BASECelladd1, BASECelladd2 End Sub

  • エクセル VBA シートの選択 

    windows XP でエクセル2000を使っています。 Sub aaa() Sheets("Sheet1").Select Dim a As String a = Cells(2, 4) Sheets(a).Select Range("A1").Select End Sub というマクロだと セルに入っている値のシート名を探してくれます。 ですが Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) If Intersect(Target, Range("B11:b683")) Is Nothing Then Exit Sub Worksheets("Sheet1").Range("C2").Value = Target.Value Dim b As String b = Range("C2).value (←ここをcellsにしてもダメ) Sheets(b).Select Range("A1").Select End Sub これだとsheets(b)を選びません。Sheets(b).Selectのところが黄色くなります。 何処が間違えているのでしょうか。 全くの素人ですが、仕事で必要に迫られています。 わかりやすく回答・解説くれると助かります。

  • 2007エクセルVBが2013エクセルで動かない

    よろしくお願いします。 エクセル2007VBをエクセル2013に移行して動かしたところ >>>>の部分でエラーが出ました 2007では動いていたのですが、なぜエラーになったのかわかりません。 プログラムは下記の通りです。 Dim iti1 As String Dim ITI2 As String Dim ITI3 As String Dim ITI4 As String Dim ITI5 As String Dim ITI6 As String Dim ITI7 As String Dim ITI8 As String Dim myRange As Range Dim myrange1 As Range Dim answer As Integer Dim c As Double Dim n As Double Workbooks(book1).Activate Sheets("A").Select ITI4 = Range("D65536").End(xlUp).Address '----D列の最終行から上方向の終端セルを選択 Set myRange = Worksheets("A").Range("d6", ITI4) answer = Application.WorksheetFunction.Count(myRange) Set myrange1 = Worksheets("A").Range("g5") For c = 1 To answer 'データー個数のカウント If myrange1.Offset(c) = myday Then n = n + 1 Next     Workbooks(book1).Activate Sheets("A").Select 'コピー座標の取得 iti1 = Range("D65536").End(xlUp).Address '----D列の最終行から上方向の終端セルを選択 ITI7 = Range(iti1).Offset(, 9).Address Range("a5", ITI7).AutoFilter FIELD:=7, Criteria1:=myday ITI2 = Range("M65536").End(xlUp).Address '----M列の最終行から上方向の終端セルを選択 'コードコピー ITI5 = Range(ITI2).Offset(-n + 1, -10).Address '左上のセル>>>>>>>>>ここでアプリケーション定義又はオブジェクトの定義エラーがおこります。 ITI6 = Range(ITI2).Offset(, -9).Address '右下のセル Range(ITI5, ITI6).Copy 'scと銘柄コード貼り付け Workbooks(book3).Activate Sheets("記入").Select ITI3 = Range("c65536").End(xlUp).Address '----C列の最終行から上方向の終端セルを選択 ITI8 = Range(ITI3).Address '終端セルの次を選択 Range(ITI8).Offset(1).PasteSpecial Paste:=xlPasteValues よろしくお願いします。 まだ何本かVBのプログラムがあるのですが移行に際しての注意などがあるサイトがあったら教えてください。

  • エクセルのマクロで変動する範囲にコピペ

    いつもお世話になっております。 やりたいことは、 Sheet1において計算結果A1の値を変数nでとって、 (nが1以下になることはありません) A2のデータを W2からWnまで貼り付けたいのです。 そこで以下のマクロを書いてみました。 Range("A2").Select Selection.Copy Dim i As Integer Dim n As Integer n = Val(Worksheets("Sheet1").Range("A1").Value) For i = 2 To n Cells(i, 23).Select Next ActiveSheet.Paste しかし、これでは、(nが10とすると)  W10セルにしか貼り付けられません。 正しい記述方法をご教示ください。 よろしくお願いします。

専門家に質問してみよう