• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:pdfのデータのコピー)

pdfデータのコピー方法と注意点

このQ&Aのポイント
  • pdfのデータをエクセルにコピーする際、スペース区切りでセルに割り当てる方法を使用することで、一部漢字が含まれるセルでも正しく区切られる。
  • 大量のデータを処理する場合、毎週発生する場合でも、スペース区切りでデータを割り当てる方法は効率的である。
  • 漢字だけでなく、数値のみの場合でもスペース区切りで区切り位置を正しく設定することができる。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

物は試しの、 Sub try2() Dim re As Object Dim Matches As Object Dim i As Long Dim a As String, v, x With ActiveSheet v = .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Value ReDim x(1 To UBound(v, 1)) Set re = CreateObject("VBScript.RegExp") re.Pattern = "\s{1}\D+" For i = 1 To UBound(v, 1) If re.test(v(i, 1)) Then Set Matches = re.Execute(v(i, 1)) x(i) = Replace(v(i, 1), Matches.Item(0).Value, " ") Else x(i) = v(i, 1) End If Next .Range("A:A").ClearContents .Range("A1").Resize(UBound(v, 1), 1).Value = Application.Transpose(x) .Columns("A:A").TextToColumns Space:=True End With Erase x Set re = Nothing End Sub こんな感じでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

会社名も残すのなら、 >Set Matches = re.Execute(v(i, 1)) >x(i) = Replace(v(i, 1), Matches.Item(0).Value, " ") を Set Matches = re.Execute(v(i, 1)) a = Matches.Item(0).Value x(i) = Replace(v(i, 1), a , a & " ") に変更願います。

e_take3043
質問者

お礼

いろいろありがとうございます これから試してみます vbは素人なので本を読みながら挑戦です これからもよろしくお願いします

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>漢字部分(会社名)だけを消去すればよいようです。 Sub try()   Dim re As Object   Dim Matches As Object   Dim a As String   a = Range("A1").Value   Set re = CreateObject("VBScript.RegExp")   re.Pattern = "\s{1}(\D+)"     If re.test(a) Then      Set Matches = re.Execute(a)      With Matches.Item(0)           Range("B1").Value = Replace(a, .Value, " ")      End With   End If   Set re = Nothing End Sub 例えるなら、こうゆう事ですか?

e_take3043
質問者

お礼

詳しい回答ありがとうございます VBは素人ですが一語ずつ約しながら試して見ます  またわからないことがあったら教えてください

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

何でもエクセルに貼り付けできるという仮定がまちがいなんです。 普通あるアプリのデータを、エクセルに貼り付けるって、プログラムをやればわかるが、アプリ側にも、エクセル側にも大変な仕組みの組み込みがいるのです。 PDFは主に印刷用のファイル形式であるので、貼り付けても、エクセルのセルにスパッと収まらない。ただテキストデータ的なものは持っているので、質問のようになる。 ーー さて質問の例では カンマ区切りで分けられるものは分けるとして、残るは、会社名の文字列と、次の数字・数値が分離できないという課題に表現できると思う。 例データA1:A3でB,C列は式の結果 A列   B列   C列 丸山商事12 12 丸山商事 幸食品234 234 幸食品 寿運輸3456 3456 寿運輸 B列は =MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),99999) といれて、下方向に式を複写する。 会社名は C列に =SUBSTITUTE(A1,B1,"") と入れて、下方向に式を複写する。 B列の式はむつかしい技巧的なものだが、広く流布していて、定番のや り方になっている。

e_take3043
質問者

補足

あけましておめでとうございます  早速の回答ありがとうございます 質問が早計でした。漢字部分(会社名)の前にはすでにスペースがあるので単純に漢字部分(会社名)だけを消去すればよいようです。 失礼しました。 元データが 例 (1 1301 会社名1,000 78,287,574 12.64 13.48 1.08 -0.65 13.90 14.80)です。 これを漢字部分(会社名)だけを消去 (1 1301 1,000 78,287,574 12.64 13.48 1.08 -0.65 13.90 14.80) それを区切り位置でスペース区切りすると A列    1        (連番) B列 1301        (コード) C列  1,000        (データ 1) D列 78,287,574   (データ 2) E列 12.64      (データ 3) F列 13.48      (データ 4) G列 1.08       (データ 5) H列 -0.65      (データ 6) I列 13.90      (データ 7) J列 14.80      (データ 8) となります。 先のご回答も大変参考になりました

すると、全ての回答が全文表示されます。

関連するQ&A